@fluentui-react-native/framework-base 0.1.2 → 0.1.3

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.
Files changed (47) hide show
  1. package/CHANGELOG.json +16 -1
  2. package/CHANGELOG.md +10 -2
  3. package/lib/index.d.ts +2 -2
  4. package/lib/index.d.ts.map +1 -1
  5. package/lib/index.js +1 -1
  6. package/lib/index.js.map +1 -1
  7. package/lib/memo-cache/getCacheEntry.d.ts +8 -6
  8. package/lib/memo-cache/getCacheEntry.d.ts.map +1 -1
  9. package/lib/memo-cache/getCacheEntry.js +5 -16
  10. package/lib/memo-cache/getCacheEntry.js.map +1 -1
  11. package/lib/memo-cache/getMemoCache.d.ts +15 -3
  12. package/lib/memo-cache/getMemoCache.d.ts.map +1 -1
  13. package/lib/memo-cache/getMemoCache.js +11 -1
  14. package/lib/memo-cache/getMemoCache.js.map +1 -1
  15. package/lib/memo-cache/getMemoCache.test.js +2 -2
  16. package/lib/memo-cache/getMemoCache.test.js.map +1 -1
  17. package/lib/memo-cache/memoize.js.map +1 -1
  18. package/lib-commonjs/index.d.ts +2 -2
  19. package/lib-commonjs/index.d.ts.map +1 -1
  20. package/lib-commonjs/index.js +2 -1
  21. package/lib-commonjs/index.js.map +1 -1
  22. package/lib-commonjs/memo-cache/getCacheEntry.d.ts +8 -6
  23. package/lib-commonjs/memo-cache/getCacheEntry.d.ts.map +1 -1
  24. package/lib-commonjs/memo-cache/getCacheEntry.js +5 -16
  25. package/lib-commonjs/memo-cache/getCacheEntry.js.map +1 -1
  26. package/lib-commonjs/memo-cache/getMemoCache.d.ts +15 -3
  27. package/lib-commonjs/memo-cache/getMemoCache.d.ts.map +1 -1
  28. package/lib-commonjs/memo-cache/getMemoCache.js +13 -2
  29. package/lib-commonjs/memo-cache/getMemoCache.js.map +1 -1
  30. package/lib-commonjs/memo-cache/getMemoCache.test.js +1 -1
  31. package/lib-commonjs/memo-cache/getMemoCache.test.js.map +1 -1
  32. package/lib-commonjs/memo-cache/memoize.js.map +1 -1
  33. package/package.json +1 -16
  34. package/src/index.ts +2 -2
  35. package/src/memo-cache/getCacheEntry.ts +17 -25
  36. package/src/memo-cache/getMemoCache.test.ts +2 -2
  37. package/src/memo-cache/getMemoCache.ts +24 -8
  38. package/src/memo-cache/memoize.ts +2 -2
  39. package/lib/memo-cache/index.d.ts +0 -4
  40. package/lib/memo-cache/index.d.ts.map +0 -1
  41. package/lib/memo-cache/index.js +0 -3
  42. package/lib/memo-cache/index.js.map +0 -1
  43. package/lib-commonjs/memo-cache/index.d.ts +0 -4
  44. package/lib-commonjs/memo-cache/index.d.ts.map +0 -1
  45. package/lib-commonjs/memo-cache/index.js +0 -8
  46. package/lib-commonjs/memo-cache/index.js.map +0 -1
  47. package/src/memo-cache/index.ts +0 -3
package/CHANGELOG.json CHANGED
@@ -2,7 +2,22 @@
2
2
  "name": "@fluentui-react-native/framework-base",
3
3
  "entries": [
4
4
  {
5
- "date": "Tue, 22 Jul 2025 19:02:21 GMT",
5
+ "date": "Wed, 23 Jul 2025 00:18:14 GMT",
6
+ "version": "0.1.3",
7
+ "tag": "@fluentui-react-native/framework-base_v0.1.3",
8
+ "comments": {
9
+ "patch": [
10
+ {
11
+ "author": "jasonmo@microsoft.com",
12
+ "package": "@fluentui-react-native/framework-base",
13
+ "commit": "dd4d507b4ebca7f13757f54cb36f762a3a50d9cc",
14
+ "comment": "fix types in memo-cache as well as a codescan security issue"
15
+ }
16
+ ]
17
+ }
18
+ },
19
+ {
20
+ "date": "Tue, 22 Jul 2025 19:06:23 GMT",
6
21
  "version": "0.1.2",
7
22
  "tag": "@fluentui-react-native/framework-base_v0.1.2",
8
23
  "comments": {
package/CHANGELOG.md CHANGED
@@ -1,12 +1,20 @@
1
1
  # Change Log - @fluentui-react-native/framework-base
2
2
 
3
- <!-- This log was last generated on Tue, 22 Jul 2025 19:02:21 GMT and should not be manually modified. -->
3
+ <!-- This log was last generated on Wed, 23 Jul 2025 00:18:14 GMT and should not be manually modified. -->
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## 0.1.3
8
+
9
+ Wed, 23 Jul 2025 00:18:14 GMT
10
+
11
+ ### Patches
12
+
13
+ - fix types in memo-cache as well as a codescan security issue (jasonmo@microsoft.com)
14
+
7
15
  ## 0.1.2
8
16
 
9
- Tue, 22 Jul 2025 19:02:21 GMT
17
+ Tue, 22 Jul 2025 19:06:23 GMT
10
18
 
11
19
  ### Patches
12
20
 
package/lib/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { immutableMerge, immutableMergeCore, processImmutable, filterToObjects } from './immutable-merge/Merge';
2
2
  export type { BuiltinRecursionHandlers, CustomRecursionHandler, MergeOptions, ObjectBase, RecursionHandler, RecursionOption, } from './immutable-merge/Merge';
3
- export type { GetMemoValue } from './memo-cache/getMemoCache';
4
- export { getMemoCache } from './memo-cache/getMemoCache';
3
+ export type { GetMemoValue, GetTypedMemoValue } from './memo-cache/getMemoCache';
4
+ export { getMemoCache, getTypedMemoCache } from './memo-cache/getMemoCache';
5
5
  export { memoize } from './memo-cache/memoize';
6
6
  export type { StyleProp } from './merge-props/mergeStyles.types';
7
7
  export { mergeStyles } from './merge-props/mergeStyles';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAChH,YAAY,EACV,wBAAwB,EACxB,sBAAsB,EACtB,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AAGjC,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,YAAY,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAChH,YAAY,EACV,wBAAwB,EACxB,sBAAsB,EACtB,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AAGjC,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,YAAY,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC"}
package/lib/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // immutable-merge exports
2
2
  export { immutableMerge, immutableMergeCore, processImmutable, filterToObjects } from './immutable-merge/Merge';
3
- export { getMemoCache } from './memo-cache/getMemoCache';
3
+ export { getMemoCache, getTypedMemoCache } from './memo-cache/getMemoCache';
4
4
  export { memoize } from './memo-cache/memoize';
5
5
  export { mergeStyles } from './merge-props/mergeStyles';
6
6
  export { mergeProps } from './merge-props/mergeProps';
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAYhH,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAI/C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,4BAA4B;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAYhH,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAI/C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,4BAA4B;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC"}
@@ -1,16 +1,18 @@
1
- export type CacheEntry<T, TGet = any> = {
1
+ /** signature for the object/function key values, used for memoization */
2
+ export type MemoObjectKey = object | Function;
3
+ export type CacheEntry<T = unknown> = {
2
4
  /** stores the cached value if any */
3
5
  value?: T;
4
6
  /** entry used for undefined and null values, these both collapse to the same type */
5
- empty?: CacheEntry<TGet>;
7
+ empty?: CacheEntry<T>;
6
8
  /** entry used for the case where the array of args is null or length 0 */
7
- noargs?: CacheEntry<TGet>;
9
+ noargs?: CacheEntry<T>;
8
10
  /** all remaining non-object types are keyed as strings for lookups */
9
11
  str?: {
10
- [key: string]: CacheEntry<TGet>;
12
+ [key: string]: CacheEntry<T>;
11
13
  };
12
14
  /** object types are keyed in a weak map on object identity */
13
- obj?: WeakMap<object, TGet>;
15
+ obj?: WeakMap<MemoObjectKey, CacheEntry<T>>;
14
16
  };
15
17
  /**
16
18
  * Given a base entry, either traverse or build the cache tree that matches the provided args
@@ -18,5 +20,5 @@ export type CacheEntry<T, TGet = any> = {
18
20
  * @param entry - entry to use as the base of the cache walk
19
21
  * @param args - array of arguments to use to progress deeper into the cache
20
22
  */
21
- export declare function getCacheEntry<T, TGet = any>(entry: CacheEntry<T>, args: any[]): CacheEntry<TGet>;
23
+ export declare function getCacheEntry(entry: CacheEntry, args: unknown[]): CacheEntry;
22
24
  //# sourceMappingURL=getCacheEntry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getCacheEntry.d.ts","sourceRoot":"","sources":["../../src/memo-cache/getCacheEntry.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG,GAAG,IAAI;IACtC,qCAAqC;IACrC,KAAK,CAAC,EAAE,CAAC,CAAC;IAEV,qFAAqF;IACrF,KAAK,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAEzB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAE1B,sEAAsE;IACtE,GAAG,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;IAE1C,8DAA8D;IAC9D,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAC7B,CAAC;AAsCF;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAOhG"}
1
+ {"version":3,"file":"getCacheEntry.d.ts","sourceRoot":"","sources":["../../src/memo-cache/getCacheEntry.ts"],"names":[],"mappings":"AAAA,yEAAyE;AAEzE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE9C,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,OAAO,IAAI;IACpC,qCAAqC;IACrC,KAAK,CAAC,EAAE,CAAC,CAAC;IAEV,qFAAqF;IACrF,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAEtB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAEvB,sEAAsE;IACtE,GAAG,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC;IAEvC,8DAA8D;IAC9D,GAAG,CAAC,EAAE,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;CAC7C,CAAC;AA0BF;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,UAAU,CAO5E"}
@@ -1,14 +1,3 @@
1
- /**
2
- * just wraps the common entry.foo = entry.foo || {} pattern
3
- * @param entry - entry to ensure a key value for
4
- * @param key - which key of that entry to ensure the value for
5
- */
6
- function ensureAndReturn(entry, key) {
7
- if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
8
- throw new Error('Invalid key');
9
- }
10
- return (entry[key] = entry[key] || {});
11
- }
12
1
  /**
13
2
  * Step one level deeper in the cache, based on the key value from the current location
14
3
  *
@@ -20,17 +9,17 @@ function jumpToCacheEntry(entry, val) {
20
9
  // undefined or null just routes directly to the empty object. This avoids the issues of string collisions with 'null' or 'undefined'
21
10
  // when using the string key map, it also avoids creating the WeakMap (since null is technically typoef object), particularly in cases
22
11
  // where null is just being set on non-object types.
23
- return ensureAndReturn(entry, 'empty');
12
+ return (entry.empty ??= {});
24
13
  }
25
14
  if (typeof val === 'object' || typeof val === 'function') {
26
15
  // objects and functions will be treated as key values in a WeakMap
27
- const byObj = (entry.obj = entry.obj || new WeakMap());
16
+ const byObj = (entry.obj ??= new WeakMap());
28
17
  return byObj.get(val) || byObj.set(val, {}).get(val);
29
18
  }
30
19
  // otherwise convert everything to a string and store it in the str object (using it as a map)
31
20
  const key = val + '';
32
- const byString = ensureAndReturn(entry, 'str');
33
- return (byString[key] = byString[key] || {});
21
+ const byString = (entry.str ??= {});
22
+ return (byString[key] ??= {});
34
23
  }
35
24
  /**
36
25
  * Given a base entry, either traverse or build the cache tree that matches the provided args
@@ -44,6 +33,6 @@ export function getCacheEntry(entry, args) {
44
33
  // - otherwise if there are no args just use the noargs branch
45
34
  return args && args.length > 0
46
35
  ? args.reduce((previous, arg) => jumpToCacheEntry(previous, arg), entry)
47
- : ensureAndReturn(entry, 'noargs');
36
+ : (entry.noargs ??= {});
48
37
  }
49
38
  //# sourceMappingURL=getCacheEntry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getCacheEntry.js","sourceRoot":"","sources":["../../src/memo-cache/getCacheEntry.ts"],"names":[],"mappings":"AAiBA;;;;GAIG;AACH,SAAS,eAAe,CAAC,KAAsB,EAAE,GAA0B;IACzE,IAAK,GAAc,KAAK,WAAW,IAAK,GAAc,KAAK,aAAa,IAAK,GAAc,KAAK,WAAW,EAAE;QAC3G,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;KAChC;IACD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,KAAsB,EAAE,GAAQ;IACxD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;QACrC,sIAAsI;QACtI,sIAAsI;QACtI,oDAAoD;QACpD,OAAO,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KACxC;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;QACxD,mEAAmE;QACnE,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,IAAI,OAAO,EAA2B,CAAC,CAAC;QAChF,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KACtD;IACD,8FAA8F;IAC9F,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;IACrB,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC/C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAgB,KAAoB,EAAE,IAAW;IAC5E,6DAA6D;IAC7D,8GAA8G;IAC9G,8DAA8D;IAC9D,OAAO,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAC5B,CAAC,CAAE,IAAI,CAAC,MAAM,CAAC,CAAC,QAAyB,EAAE,GAAQ,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,KAAK,CAAsB;QACpH,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"getCacheEntry.js","sourceRoot":"","sources":["../../src/memo-cache/getCacheEntry.ts"],"names":[],"mappings":"AAqBA;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,KAAiB,EAAE,GAAQ;IACnD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;QACrC,sIAAsI;QACtI,sIAAsI;QACtI,oDAAoD;QACpD,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;KAC7B;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;QACxD,mEAAmE;QACnE,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,OAAO,EAA6B,CAAC,CAAC;QACvE,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KACtD;IACD,8FAA8F;IAC9F,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;IACrB,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;AAChC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,KAAiB,EAAE,IAAe;IAC9D,6DAA6D;IAC7D,8GAA8G;IAC9G,8DAA8D;IAC9D,OAAO,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAC5B,CAAC,CAAE,IAAI,CAAC,MAAM,CAAC,CAAC,QAAoB,EAAE,GAAY,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,KAAK,CAAgB;QAC7G,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;AAC5B,CAAC"}
@@ -1,11 +1,23 @@
1
1
  export type ValueFactory<T> = () => T;
2
- /** signature for the cache function */
3
- export type GetMemoValue<T, TGet = any> = (factory: T | ValueFactory<T>, keys: any[]) => [T, GetMemoValue<TGet>];
2
+ /**
3
+ * Signature for the cache function. While the implementation is generic, it can run in two modes:
4
+ * - Typed: the cache will enforce the type of both the factory and returned value
5
+ * - Untyped: the cache will infer the type on each call from the factory return value
6
+ */
7
+ export type GetTypedMemoValue<T> = (factory: T | ValueFactory<T>, keys: unknown[]) => [T, GetTypedMemoValue<T>];
8
+ export type GetMemoValue = <T>(factory: T | ValueFactory<T>, keys: unknown[]) => [T, GetMemoValue];
4
9
  /**
5
10
  * Get a memo cache instance, this can either be completely self-contained or associated with a global key
6
11
  *
7
12
  * @param globalKey - optional object reference to use as a key for this cache. If specified it can be used
8
13
  * to retrieve the same cache from the global call. If not specified the returned cache will be completely isolated.
9
14
  */
10
- export declare function getMemoCache<T = any>(globalKey?: object): GetMemoValue<T>;
15
+ export declare function getMemoCache(globalKey?: object): GetMemoValue;
16
+ /**
17
+ * Get a typed memo cache instance, this can either be completely self-contained or associated with a global key
18
+ *
19
+ * @param globalKey - optional object reference to use as a key for this cache. If specified it can be used
20
+ * to retrieve the same cache from the global call. If not specified the returned cache will be completely isolated.
21
+ */
22
+ export declare function getTypedMemoCache<T>(globalKey?: object): GetTypedMemoValue<T>;
11
23
  //# sourceMappingURL=getMemoCache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getMemoCache.d.ts","sourceRoot":"","sources":["../../src/memo-cache/getMemoCache.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AAEtC,uCAAuC;AACvC,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AAqBjH;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,CAAC,GAAG,GAAG,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAGzE"}
1
+ {"version":3,"file":"getMemoCache.d.ts","sourceRoot":"","sources":["../../src/memo-cache/getMemoCache.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AAEtC;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;AAChH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AAqBnG;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,CAG7D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAG7E"}
@@ -11,7 +11,7 @@ const _baseEntry = {};
11
11
  function getMemoValueWorker(entry, factory, keys) {
12
12
  const foundEntry = getCacheEntry(entry, keys);
13
13
  // check the key being set, not the value to disambiguate an undefined factory result/value from never having run the factory
14
- if (!foundEntry.hasOwnProperty('value')) {
14
+ if (!Object.prototype.hasOwnProperty.call(foundEntry, 'value')) {
15
15
  foundEntry.value = typeof factory === 'function' ? factory() : factory;
16
16
  }
17
17
  return [foundEntry.value, (fact, args) => getMemoValueWorker(foundEntry, fact, args)];
@@ -26,4 +26,14 @@ export function getMemoCache(globalKey) {
26
26
  const entry = globalKey ? getCacheEntry(_baseEntry, [globalKey]) : {};
27
27
  return (fact, args) => getMemoValueWorker(entry, fact, args);
28
28
  }
29
+ /**
30
+ * Get a typed memo cache instance, this can either be completely self-contained or associated with a global key
31
+ *
32
+ * @param globalKey - optional object reference to use as a key for this cache. If specified it can be used
33
+ * to retrieve the same cache from the global call. If not specified the returned cache will be completely isolated.
34
+ */
35
+ export function getTypedMemoCache(globalKey) {
36
+ const entry = globalKey ? getCacheEntry(_baseEntry, [globalKey]) : {};
37
+ return (fact, args) => getMemoValueWorker(entry, fact, args);
38
+ }
29
39
  //# sourceMappingURL=getMemoCache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getMemoCache.js","sourceRoot":"","sources":["../../src/memo-cache/getMemoCache.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAOhD,oEAAoE;AACpE,MAAM,UAAU,GAAoB,EAAE,CAAC;AAEvC;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAgB,KAAsB,EAAE,OAA4B,EAAE,IAAW;IAC1G,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9C,6HAA6H;IAC7H,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;QACvC,UAAU,CAAC,KAAK,GAAG,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAE,OAA2B,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;KAC7F;IACD,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,IAA+B,EAAE,IAAW,EAAE,EAAE,CAAC,kBAAkB,CAAO,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAChI,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAU,SAAkB;IACtD,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,OAAO,CAAC,IAAyB,EAAE,IAAW,EAAE,EAAE,CAAC,kBAAkB,CAAI,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC9F,CAAC"}
1
+ {"version":3,"file":"getMemoCache.js","sourceRoot":"","sources":["../../src/memo-cache/getMemoCache.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAYhD,oEAAoE;AACpE,MAAM,UAAU,GAAe,EAAE,CAAC;AAElC;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAI,KAAiB,EAAE,OAA4B,EAAE,IAAe;IAC7F,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9C,6HAA6H;IAC7H,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE;QAC9D,UAAU,CAAC,KAAK,GAAG,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAE,OAA2B,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;KAC7F;IACD,OAAO,CAAC,UAAU,CAAC,KAAU,EAAE,CAAI,IAAyB,EAAE,IAAe,EAAE,EAAE,CAAC,kBAAkB,CAAI,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACnI,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,SAAkB;IAC7C,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAI,SAAkB;IACrD,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/D,CAAC"}
@@ -1,4 +1,4 @@
1
- import { getMemoCache } from './getMemoCache';
1
+ import { getMemoCache, getTypedMemoCache } from './getMemoCache';
2
2
  function getObjFactory() {
3
3
  const obj = { id: 0 };
4
4
  return () => ({
@@ -28,7 +28,7 @@ describe('getMemoCache unit tests', () => {
28
28
  expect(val).toBe(obj);
29
29
  });
30
30
  test('memoValue executes function', () => {
31
- const memoValue = getMemoCache();
31
+ const memoValue = getTypedMemoCache();
32
32
  const fn = getObjFactory();
33
33
  const v1 = fn();
34
34
  const [v2] = memoValue(fn, ['bar', 'baz']);
@@ -1 +1 @@
1
- {"version":3,"file":"getMemoCache.test.js","sourceRoot":"","sources":["../../src/memo-cache/getMemoCache.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getMemoCache.test.js","sourceRoot":"","sources":["../../src/memo-cache/getMemoCache.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"memoize.js","sourceRoot":"","sources":["../../src/memo-cache/memoize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;GAGG;AACH,sEAAsE;AACtE,MAAM,UAAU,OAAO,CAAqB,EAAK;IAC/C,6DAA6D;IAC7D,MAAM,KAAK,GAAG,YAAY,EAAO,CAAC;IAClC,sDAAsD;IACtD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE;QACjC,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC;IACF,0DAA0D;IAC1D,OAAO,OAAuB,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"memoize.js","sourceRoot":"","sources":["../../src/memo-cache/memoize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;GAGG;AACH,sEAAsE;AACtE,MAAM,UAAU,OAAO,CAAqB,EAAK;IAC/C,6DAA6D;IAC7D,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;IAC7B,sDAAsD;IACtD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;QACrC,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC;IACF,0DAA0D;IAC1D,OAAO,OAAuB,CAAC;AACjC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  export { immutableMerge, immutableMergeCore, processImmutable, filterToObjects } from './immutable-merge/Merge';
2
2
  export type { BuiltinRecursionHandlers, CustomRecursionHandler, MergeOptions, ObjectBase, RecursionHandler, RecursionOption, } from './immutable-merge/Merge';
3
- export type { GetMemoValue } from './memo-cache/getMemoCache';
4
- export { getMemoCache } from './memo-cache/getMemoCache';
3
+ export type { GetMemoValue, GetTypedMemoValue } from './memo-cache/getMemoCache';
4
+ export { getMemoCache, getTypedMemoCache } from './memo-cache/getMemoCache';
5
5
  export { memoize } from './memo-cache/memoize';
6
6
  export type { StyleProp } from './merge-props/mergeStyles.types';
7
7
  export { mergeStyles } from './merge-props/mergeStyles';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAChH,YAAY,EACV,wBAAwB,EACxB,sBAAsB,EACtB,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AAGjC,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,YAAY,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAChH,YAAY,EACV,wBAAwB,EACxB,sBAAsB,EACtB,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AAGjC,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,YAAY,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGtD,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.stagedComponent = exports.withSlots = exports.renderSlot = exports.mergeProps = exports.mergeStyles = exports.memoize = exports.getMemoCache = exports.filterToObjects = exports.processImmutable = exports.immutableMergeCore = exports.immutableMerge = void 0;
3
+ exports.stagedComponent = exports.withSlots = exports.renderSlot = exports.mergeProps = exports.mergeStyles = exports.memoize = exports.getTypedMemoCache = exports.getMemoCache = exports.filterToObjects = exports.processImmutable = exports.immutableMergeCore = exports.immutableMerge = void 0;
4
4
  // immutable-merge exports
5
5
  var Merge_1 = require("./immutable-merge/Merge");
6
6
  Object.defineProperty(exports, "immutableMerge", { enumerable: true, get: function () { return Merge_1.immutableMerge; } });
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "processImmutable", { enumerable: true, get: func
9
9
  Object.defineProperty(exports, "filterToObjects", { enumerable: true, get: function () { return Merge_1.filterToObjects; } });
10
10
  var getMemoCache_1 = require("./memo-cache/getMemoCache");
11
11
  Object.defineProperty(exports, "getMemoCache", { enumerable: true, get: function () { return getMemoCache_1.getMemoCache; } });
12
+ Object.defineProperty(exports, "getTypedMemoCache", { enumerable: true, get: function () { return getMemoCache_1.getTypedMemoCache; } });
12
13
  var memoize_1 = require("./memo-cache/memoize");
13
14
  Object.defineProperty(exports, "memoize", { enumerable: true, get: function () { return memoize_1.memoize; } });
14
15
  var mergeStyles_1 = require("./merge-props/mergeStyles");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,0BAA0B;AAC1B,iDAAgH;AAAvG,uGAAA,cAAc,OAAA;AAAE,2GAAA,kBAAkB,OAAA;AAAE,yGAAA,gBAAgB,OAAA;AAAE,wGAAA,eAAe,OAAA;AAY9E,0DAAyD;AAAhD,4GAAA,YAAY,OAAA;AACrB,gDAA+C;AAAtC,kGAAA,OAAO,OAAA;AAIhB,yDAAwD;AAA/C,0GAAA,WAAW,OAAA;AACpB,uDAAsD;AAA7C,wGAAA,UAAU,OAAA;AAEnB,4BAA4B;AAC5B,8DAA6D;AAApD,wGAAA,UAAU,OAAA;AAEnB,4DAA2D;AAAlD,sGAAA,SAAS,OAAA;AAClB,wEAAuE;AAA9D,kHAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,0BAA0B;AAC1B,iDAAgH;AAAvG,uGAAA,cAAc,OAAA;AAAE,2GAAA,kBAAkB,OAAA;AAAE,yGAAA,gBAAgB,OAAA;AAAE,wGAAA,eAAe,OAAA;AAY9E,0DAA4E;AAAnE,4GAAA,YAAY,OAAA;AAAE,iHAAA,iBAAiB,OAAA;AACxC,gDAA+C;AAAtC,kGAAA,OAAO,OAAA;AAIhB,yDAAwD;AAA/C,0GAAA,WAAW,OAAA;AACpB,uDAAsD;AAA7C,wGAAA,UAAU,OAAA;AAEnB,4BAA4B;AAC5B,8DAA6D;AAApD,wGAAA,UAAU,OAAA;AAEnB,4DAA2D;AAAlD,sGAAA,SAAS,OAAA;AAClB,wEAAuE;AAA9D,kHAAA,eAAe,OAAA"}
@@ -1,16 +1,18 @@
1
- export type CacheEntry<T, TGet = any> = {
1
+ /** signature for the object/function key values, used for memoization */
2
+ export type MemoObjectKey = object | Function;
3
+ export type CacheEntry<T = unknown> = {
2
4
  /** stores the cached value if any */
3
5
  value?: T;
4
6
  /** entry used for undefined and null values, these both collapse to the same type */
5
- empty?: CacheEntry<TGet>;
7
+ empty?: CacheEntry<T>;
6
8
  /** entry used for the case where the array of args is null or length 0 */
7
- noargs?: CacheEntry<TGet>;
9
+ noargs?: CacheEntry<T>;
8
10
  /** all remaining non-object types are keyed as strings for lookups */
9
11
  str?: {
10
- [key: string]: CacheEntry<TGet>;
12
+ [key: string]: CacheEntry<T>;
11
13
  };
12
14
  /** object types are keyed in a weak map on object identity */
13
- obj?: WeakMap<object, TGet>;
15
+ obj?: WeakMap<MemoObjectKey, CacheEntry<T>>;
14
16
  };
15
17
  /**
16
18
  * Given a base entry, either traverse or build the cache tree that matches the provided args
@@ -18,5 +20,5 @@ export type CacheEntry<T, TGet = any> = {
18
20
  * @param entry - entry to use as the base of the cache walk
19
21
  * @param args - array of arguments to use to progress deeper into the cache
20
22
  */
21
- export declare function getCacheEntry<T, TGet = any>(entry: CacheEntry<T>, args: any[]): CacheEntry<TGet>;
23
+ export declare function getCacheEntry(entry: CacheEntry, args: unknown[]): CacheEntry;
22
24
  //# sourceMappingURL=getCacheEntry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getCacheEntry.d.ts","sourceRoot":"","sources":["../../src/memo-cache/getCacheEntry.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,IAAI,GAAG,GAAG,IAAI;IACtC,qCAAqC;IACrC,KAAK,CAAC,EAAE,CAAC,CAAC;IAEV,qFAAqF;IACrF,KAAK,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAEzB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAE1B,sEAAsE;IACtE,GAAG,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;IAE1C,8DAA8D;IAC9D,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAC7B,CAAC;AAsCF;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,GAAG,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAOhG"}
1
+ {"version":3,"file":"getCacheEntry.d.ts","sourceRoot":"","sources":["../../src/memo-cache/getCacheEntry.ts"],"names":[],"mappings":"AAAA,yEAAyE;AAEzE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE9C,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,OAAO,IAAI;IACpC,qCAAqC;IACrC,KAAK,CAAC,EAAE,CAAC,CAAC;IAEV,qFAAqF;IACrF,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAEtB,0EAA0E;IAC1E,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAEvB,sEAAsE;IACtE,GAAG,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;KAAE,CAAC;IAEvC,8DAA8D;IAC9D,GAAG,CAAC,EAAE,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;CAC7C,CAAC;AA0BF;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,UAAU,CAO5E"}
@@ -1,17 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getCacheEntry = void 0;
4
- /**
5
- * just wraps the common entry.foo = entry.foo || {} pattern
6
- * @param entry - entry to ensure a key value for
7
- * @param key - which key of that entry to ensure the value for
8
- */
9
- function ensureAndReturn(entry, key) {
10
- if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
11
- throw new Error('Invalid key');
12
- }
13
- return (entry[key] = entry[key] || {});
14
- }
15
4
  /**
16
5
  * Step one level deeper in the cache, based on the key value from the current location
17
6
  *
@@ -23,17 +12,17 @@ function jumpToCacheEntry(entry, val) {
23
12
  // undefined or null just routes directly to the empty object. This avoids the issues of string collisions with 'null' or 'undefined'
24
13
  // when using the string key map, it also avoids creating the WeakMap (since null is technically typoef object), particularly in cases
25
14
  // where null is just being set on non-object types.
26
- return ensureAndReturn(entry, 'empty');
15
+ return (entry.empty ??= {});
27
16
  }
28
17
  if (typeof val === 'object' || typeof val === 'function') {
29
18
  // objects and functions will be treated as key values in a WeakMap
30
- const byObj = (entry.obj = entry.obj || new WeakMap());
19
+ const byObj = (entry.obj ??= new WeakMap());
31
20
  return byObj.get(val) || byObj.set(val, {}).get(val);
32
21
  }
33
22
  // otherwise convert everything to a string and store it in the str object (using it as a map)
34
23
  const key = val + '';
35
- const byString = ensureAndReturn(entry, 'str');
36
- return (byString[key] = byString[key] || {});
24
+ const byString = (entry.str ??= {});
25
+ return (byString[key] ??= {});
37
26
  }
38
27
  /**
39
28
  * Given a base entry, either traverse or build the cache tree that matches the provided args
@@ -47,7 +36,7 @@ function getCacheEntry(entry, args) {
47
36
  // - otherwise if there are no args just use the noargs branch
48
37
  return args && args.length > 0
49
38
  ? args.reduce((previous, arg) => jumpToCacheEntry(previous, arg), entry)
50
- : ensureAndReturn(entry, 'noargs');
39
+ : (entry.noargs ??= {});
51
40
  }
52
41
  exports.getCacheEntry = getCacheEntry;
53
42
  //# sourceMappingURL=getCacheEntry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getCacheEntry.js","sourceRoot":"","sources":["../../src/memo-cache/getCacheEntry.ts"],"names":[],"mappings":";;;AAiBA;;;;GAIG;AACH,SAAS,eAAe,CAAC,KAAsB,EAAE,GAA0B;IACzE,IAAK,GAAc,KAAK,WAAW,IAAK,GAAc,KAAK,aAAa,IAAK,GAAc,KAAK,WAAW,EAAE;QAC3G,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;KAChC;IACD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AACzC,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,KAAsB,EAAE,GAAQ;IACxD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;QACrC,sIAAsI;QACtI,sIAAsI;QACtI,oDAAoD;QACpD,OAAO,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KACxC;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;QACxD,mEAAmE;QACnE,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,IAAI,OAAO,EAA2B,CAAC,CAAC;QAChF,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KACtD;IACD,8FAA8F;IAC9F,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;IACrB,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC/C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAgB,KAAoB,EAAE,IAAW;IAC5E,6DAA6D;IAC7D,8GAA8G;IAC9G,8DAA8D;IAC9D,OAAO,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAC5B,CAAC,CAAE,IAAI,CAAC,MAAM,CAAC,CAAC,QAAyB,EAAE,GAAQ,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,KAAK,CAAsB;QACpH,CAAC,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACvC,CAAC;AAPD,sCAOC"}
1
+ {"version":3,"file":"getCacheEntry.js","sourceRoot":"","sources":["../../src/memo-cache/getCacheEntry.ts"],"names":[],"mappings":";;;AAqBA;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,KAAiB,EAAE,GAAQ;IACnD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;QACrC,sIAAsI;QACtI,sIAAsI;QACtI,oDAAoD;QACpD,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;KAC7B;IACD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;QACxD,mEAAmE;QACnE,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,OAAO,EAA6B,CAAC,CAAC;QACvE,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KACtD;IACD,8FAA8F;IAC9F,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;IACrB,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE,CAAC,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;AAChC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,KAAiB,EAAE,IAAe;IAC9D,6DAA6D;IAC7D,8GAA8G;IAC9G,8DAA8D;IAC9D,OAAO,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAC5B,CAAC,CAAE,IAAI,CAAC,MAAM,CAAC,CAAC,QAAoB,EAAE,GAAY,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,KAAK,CAAgB;QAC7G,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;AAC5B,CAAC;AAPD,sCAOC"}
@@ -1,11 +1,23 @@
1
1
  export type ValueFactory<T> = () => T;
2
- /** signature for the cache function */
3
- export type GetMemoValue<T, TGet = any> = (factory: T | ValueFactory<T>, keys: any[]) => [T, GetMemoValue<TGet>];
2
+ /**
3
+ * Signature for the cache function. While the implementation is generic, it can run in two modes:
4
+ * - Typed: the cache will enforce the type of both the factory and returned value
5
+ * - Untyped: the cache will infer the type on each call from the factory return value
6
+ */
7
+ export type GetTypedMemoValue<T> = (factory: T | ValueFactory<T>, keys: unknown[]) => [T, GetTypedMemoValue<T>];
8
+ export type GetMemoValue = <T>(factory: T | ValueFactory<T>, keys: unknown[]) => [T, GetMemoValue];
4
9
  /**
5
10
  * Get a memo cache instance, this can either be completely self-contained or associated with a global key
6
11
  *
7
12
  * @param globalKey - optional object reference to use as a key for this cache. If specified it can be used
8
13
  * to retrieve the same cache from the global call. If not specified the returned cache will be completely isolated.
9
14
  */
10
- export declare function getMemoCache<T = any>(globalKey?: object): GetMemoValue<T>;
15
+ export declare function getMemoCache(globalKey?: object): GetMemoValue;
16
+ /**
17
+ * Get a typed memo cache instance, this can either be completely self-contained or associated with a global key
18
+ *
19
+ * @param globalKey - optional object reference to use as a key for this cache. If specified it can be used
20
+ * to retrieve the same cache from the global call. If not specified the returned cache will be completely isolated.
21
+ */
22
+ export declare function getTypedMemoCache<T>(globalKey?: object): GetTypedMemoValue<T>;
11
23
  //# sourceMappingURL=getMemoCache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getMemoCache.d.ts","sourceRoot":"","sources":["../../src/memo-cache/getMemoCache.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AAEtC,uCAAuC;AACvC,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AAqBjH;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,CAAC,GAAG,GAAG,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAGzE"}
1
+ {"version":3,"file":"getMemoCache.d.ts","sourceRoot":"","sources":["../../src/memo-cache/getMemoCache.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AAEtC;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;AAChH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AAqBnG;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,YAAY,CAG7D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAG7E"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getMemoCache = void 0;
3
+ exports.getTypedMemoCache = exports.getMemoCache = void 0;
4
4
  const getCacheEntry_1 = require("./getCacheEntry");
5
5
  /** base node used to remember references when a globalKey is set */
6
6
  const _baseEntry = {};
@@ -14,7 +14,7 @@ const _baseEntry = {};
14
14
  function getMemoValueWorker(entry, factory, keys) {
15
15
  const foundEntry = (0, getCacheEntry_1.getCacheEntry)(entry, keys);
16
16
  // check the key being set, not the value to disambiguate an undefined factory result/value from never having run the factory
17
- if (!foundEntry.hasOwnProperty('value')) {
17
+ if (!Object.prototype.hasOwnProperty.call(foundEntry, 'value')) {
18
18
  foundEntry.value = typeof factory === 'function' ? factory() : factory;
19
19
  }
20
20
  return [foundEntry.value, (fact, args) => getMemoValueWorker(foundEntry, fact, args)];
@@ -30,4 +30,15 @@ function getMemoCache(globalKey) {
30
30
  return (fact, args) => getMemoValueWorker(entry, fact, args);
31
31
  }
32
32
  exports.getMemoCache = getMemoCache;
33
+ /**
34
+ * Get a typed memo cache instance, this can either be completely self-contained or associated with a global key
35
+ *
36
+ * @param globalKey - optional object reference to use as a key for this cache. If specified it can be used
37
+ * to retrieve the same cache from the global call. If not specified the returned cache will be completely isolated.
38
+ */
39
+ function getTypedMemoCache(globalKey) {
40
+ const entry = globalKey ? (0, getCacheEntry_1.getCacheEntry)(_baseEntry, [globalKey]) : {};
41
+ return (fact, args) => getMemoValueWorker(entry, fact, args);
42
+ }
43
+ exports.getTypedMemoCache = getTypedMemoCache;
33
44
  //# sourceMappingURL=getMemoCache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getMemoCache.js","sourceRoot":"","sources":["../../src/memo-cache/getMemoCache.ts"],"names":[],"mappings":";;;AACA,mDAAgD;AAOhD,oEAAoE;AACpE,MAAM,UAAU,GAAoB,EAAE,CAAC;AAEvC;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAgB,KAAsB,EAAE,OAA4B,EAAE,IAAW;IAC1G,MAAM,UAAU,GAAG,IAAA,6BAAa,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9C,6HAA6H;IAC7H,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;QACvC,UAAU,CAAC,KAAK,GAAG,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAE,OAA2B,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;KAC7F;IACD,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,IAA+B,EAAE,IAAW,EAAE,EAAE,CAAC,kBAAkB,CAAO,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAChI,CAAC;AAED;;;;;GAKG;AACH,SAAgB,YAAY,CAAU,SAAkB;IACtD,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,IAAA,6BAAa,EAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,OAAO,CAAC,IAAyB,EAAE,IAAW,EAAE,EAAE,CAAC,kBAAkB,CAAI,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC9F,CAAC;AAHD,oCAGC"}
1
+ {"version":3,"file":"getMemoCache.js","sourceRoot":"","sources":["../../src/memo-cache/getMemoCache.ts"],"names":[],"mappings":";;;AACA,mDAAgD;AAYhD,oEAAoE;AACpE,MAAM,UAAU,GAAe,EAAE,CAAC;AAElC;;;;;;GAMG;AACH,SAAS,kBAAkB,CAAI,KAAiB,EAAE,OAA4B,EAAE,IAAe;IAC7F,MAAM,UAAU,GAAG,IAAA,6BAAa,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9C,6HAA6H;IAC7H,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE;QAC9D,UAAU,CAAC,KAAK,GAAG,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAE,OAA2B,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;KAC7F;IACD,OAAO,CAAC,UAAU,CAAC,KAAU,EAAE,CAAI,IAAyB,EAAE,IAAe,EAAE,EAAE,CAAC,kBAAkB,CAAI,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACnI,CAAC;AAED;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,SAAkB;IAC7C,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,IAAA,6BAAa,EAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/D,CAAC;AAHD,oCAGC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAI,SAAkB;IACrD,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,IAAA,6BAAa,EAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/D,CAAC;AAHD,8CAGC"}
@@ -30,7 +30,7 @@ describe('getMemoCache unit tests', () => {
30
30
  expect(val).toBe(obj);
31
31
  });
32
32
  test('memoValue executes function', () => {
33
- const memoValue = (0, getMemoCache_1.getMemoCache)();
33
+ const memoValue = (0, getMemoCache_1.getTypedMemoCache)();
34
34
  const fn = getObjFactory();
35
35
  const v1 = fn();
36
36
  const [v2] = memoValue(fn, ['bar', 'baz']);
@@ -1 +1 @@
1
- {"version":3,"file":"getMemoCache.test.js","sourceRoot":"","sources":["../../src/memo-cache/getMemoCache.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getMemoCache.test.js","sourceRoot":"","sources":["../../src/memo-cache/getMemoCache.test.ts"],"names":[],"mappings":";;AAAA,iDAAiE;AAMjE,SAAS,aAAa;IACpB,MAAM,GAAG,GAAY,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;IAC/B,OAAO,GAAG,EAAE,CAAC,CAAC;QACZ,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE;KACb,CAAC,CAAC;AACL,CAAC;AAED,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACxC,MAAM,SAAS,GAAG,IAAA,2BAAY,GAAE,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC9C,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACpC,MAAM,SAAS,GAAG,IAAA,2BAAY,GAAE,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACjC,MAAM,SAAS,GAAG,IAAA,2BAAY,GAAE,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACjC,MAAM,SAAS,GAAG,IAAA,2BAAY,GAAE,CAAC;QACjC,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QACjD,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACvC,MAAM,SAAS,GAAG,IAAA,gCAAiB,GAAW,CAAC;QAC/C,MAAM,EAAE,GAAG,aAAa,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;QAChB,MAAM,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACzC,MAAM,SAAS,GAAG,IAAA,2BAAY,GAAE,CAAC;QACjC,MAAM,EAAE,GAAG,aAAa,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAChC,MAAM,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gDAAgD,EAAE,GAAG,EAAE;QAC1D,MAAM,SAAS,GAAG,IAAA,2BAAY,GAAE,CAAC;QACjC,MAAM,EAAE,GAAG,aAAa,EAAE,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACtC,MAAM,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACtC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACnC,MAAM,SAAS,GAAG,IAAA,2BAAY,GAAE,CAAC;QACjC,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,EAAE,CAAC;QACjB,MAAM,CAAC,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,MAAM,EAAE,GAAG,aAAa,EAAE,CAAC;QAC3B,MAAM,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACvC,MAAM,SAAS,GAAG,IAAA,2BAAY,GAAE,CAAC;QACjC,MAAM,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACzB,MAAM,EAAE,GAAG,aAAa,EAAE,CAAC;QAC3B,MAAM,CAAC,EAAE,YAAY,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"memoize.js","sourceRoot":"","sources":["../../src/memo-cache/memoize.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAE9C;;;GAGG;AACH,sEAAsE;AACtE,SAAgB,OAAO,CAAqB,EAAK;IAC/C,6DAA6D;IAC7D,MAAM,KAAK,GAAG,IAAA,2BAAY,GAAO,CAAC;IAClC,sDAAsD;IACtD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE;QACjC,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC;IACF,0DAA0D;IAC1D,OAAO,OAAuB,CAAC;AACjC,CAAC;AATD,0BASC"}
1
+ {"version":3,"file":"memoize.js","sourceRoot":"","sources":["../../src/memo-cache/memoize.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAE9C;;;GAGG;AACH,sEAAsE;AACtE,SAAgB,OAAO,CAAqB,EAAK;IAC/C,6DAA6D;IAC7D,MAAM,KAAK,GAAG,IAAA,2BAAY,GAAE,CAAC;IAC7B,sDAAsD;IACtD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;QACrC,OAAO,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC;IACF,0DAA0D;IAC1D,OAAO,OAAuB,CAAC;AACjC,CAAC;AATD,0BASC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui-react-native/framework-base",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "Base types and utilities fluentui-react-native frameworks",
5
5
  "repository": {
6
6
  "type": "git",
@@ -16,21 +16,6 @@
16
16
  "import": "./lib/index.js",
17
17
  "require": "./lib-commonjs/index.js",
18
18
  "types": "./lib/index.d.ts"
19
- },
20
- "./immutable-merge": {
21
- "import": "./lib/immutable-merge/Merge.js",
22
- "require": "./lib-commonjs/immutable-merge/Merge.js",
23
- "types": "./lib/immutable-merge/Merge.d.ts"
24
- },
25
- "./memo-cache": {
26
- "import": "./lib/memo-cache/index.js",
27
- "require": "./lib-commonjs/memo-cache/index.js",
28
- "types": "./lib/memo-cache/index.d.ts"
29
- },
30
- "./merge-props": {
31
- "import": "./lib/merge-props/index.js",
32
- "require": "./lib-commonjs/merge-props/index.js",
33
- "types": "./lib/merge-props/lib/index.d.ts"
34
19
  }
35
20
  },
36
21
  "scripts": {
package/src/index.ts CHANGED
@@ -10,8 +10,8 @@ export type {
10
10
  } from './immutable-merge/Merge';
11
11
 
12
12
  // memo-cache exports
13
- export type { GetMemoValue } from './memo-cache/getMemoCache';
14
- export { getMemoCache } from './memo-cache/getMemoCache';
13
+ export type { GetMemoValue, GetTypedMemoValue } from './memo-cache/getMemoCache';
14
+ export { getMemoCache, getTypedMemoCache } from './memo-cache/getMemoCache';
15
15
  export { memoize } from './memo-cache/memoize';
16
16
 
17
17
  // merge-props exports
@@ -1,54 +1,46 @@
1
- export type CacheEntry<T, TGet = any> = {
1
+ /** signature for the object/function key values, used for memoization */
2
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
3
+ export type MemoObjectKey = object | Function;
4
+
5
+ export type CacheEntry<T = unknown> = {
2
6
  /** stores the cached value if any */
3
7
  value?: T;
4
8
 
5
9
  /** entry used for undefined and null values, these both collapse to the same type */
6
- empty?: CacheEntry<TGet>;
10
+ empty?: CacheEntry<T>;
7
11
 
8
12
  /** entry used for the case where the array of args is null or length 0 */
9
- noargs?: CacheEntry<TGet>;
13
+ noargs?: CacheEntry<T>;
10
14
 
11
15
  /** all remaining non-object types are keyed as strings for lookups */
12
- str?: { [key: string]: CacheEntry<TGet> };
16
+ str?: { [key: string]: CacheEntry<T> };
13
17
 
14
18
  /** object types are keyed in a weak map on object identity */
15
- obj?: WeakMap<object, TGet>;
19
+ obj?: WeakMap<MemoObjectKey, CacheEntry<T>>;
16
20
  };
17
21
 
18
- /**
19
- * just wraps the common entry.foo = entry.foo || {} pattern
20
- * @param entry - entry to ensure a key value for
21
- * @param key - which key of that entry to ensure the value for
22
- */
23
- function ensureAndReturn(entry: CacheEntry<any>, key: keyof CacheEntry<any>): CacheEntry<any> | { [key: string]: CacheEntry<any> } {
24
- if ((key as string) === '__proto__' || (key as string) === 'constructor' || (key as string) === 'prototype') {
25
- throw new Error('Invalid key');
26
- }
27
- return (entry[key] = entry[key] || {});
28
- }
29
-
30
22
  /**
31
23
  * Step one level deeper in the cache, based on the key value from the current location
32
24
  *
33
25
  * @param entry - base entry to work from
34
26
  * @param val - value to use as the key for progressing to the next level of the cache
35
27
  */
36
- function jumpToCacheEntry(entry: CacheEntry<any>, val: any): CacheEntry<any> {
28
+ function jumpToCacheEntry(entry: CacheEntry, val: any): CacheEntry {
37
29
  if (val === undefined || val === null) {
38
30
  // undefined or null just routes directly to the empty object. This avoids the issues of string collisions with 'null' or 'undefined'
39
31
  // when using the string key map, it also avoids creating the WeakMap (since null is technically typoef object), particularly in cases
40
32
  // where null is just being set on non-object types.
41
- return ensureAndReturn(entry, 'empty');
33
+ return (entry.empty ??= {});
42
34
  }
43
35
  if (typeof val === 'object' || typeof val === 'function') {
44
36
  // objects and functions will be treated as key values in a WeakMap
45
- const byObj = (entry.obj = entry.obj || new WeakMap<object, CacheEntry<any>>());
37
+ const byObj = (entry.obj ??= new WeakMap<MemoObjectKey, CacheEntry>());
46
38
  return byObj.get(val) || byObj.set(val, {}).get(val);
47
39
  }
48
40
  // otherwise convert everything to a string and store it in the str object (using it as a map)
49
41
  const key = val + '';
50
- const byString = ensureAndReturn(entry, 'str');
51
- return (byString[key] = byString[key] || {});
42
+ const byString = (entry.str ??= {});
43
+ return (byString[key] ??= {});
52
44
  }
53
45
 
54
46
  /**
@@ -57,11 +49,11 @@ function jumpToCacheEntry(entry: CacheEntry<any>, val: any): CacheEntry<any> {
57
49
  * @param entry - entry to use as the base of the cache walk
58
50
  * @param args - array of arguments to use to progress deeper into the cache
59
51
  */
60
- export function getCacheEntry<T, TGet = any>(entry: CacheEntry<T>, args: any[]): CacheEntry<TGet> {
52
+ export function getCacheEntry(entry: CacheEntry, args: unknown[]): CacheEntry {
61
53
  // in the case where the args array exists and is > 0 length:
62
54
  // - walk the cache from entry, like a linked list, jumping to the next entry by key, building it up as you go
63
55
  // - otherwise if there are no args just use the noargs branch
64
56
  return args && args.length > 0
65
- ? (args.reduce((previous: CacheEntry<any>, arg: any) => jumpToCacheEntry(previous, arg), entry) as CacheEntry<TGet>)
66
- : ensureAndReturn(entry, 'noargs');
57
+ ? (args.reduce((previous: CacheEntry, arg: unknown) => jumpToCacheEntry(previous, arg), entry) as CacheEntry)
58
+ : (entry.noargs ??= {});
67
59
  }
@@ -1,4 +1,4 @@
1
- import { getMemoCache } from './getMemoCache';
1
+ import { getMemoCache, getTypedMemoCache } from './getMemoCache';
2
2
 
3
3
  interface TestObj {
4
4
  id: number;
@@ -38,7 +38,7 @@ describe('getMemoCache unit tests', () => {
38
38
  });
39
39
 
40
40
  test('memoValue executes function', () => {
41
- const memoValue = getMemoCache();
41
+ const memoValue = getTypedMemoCache<TestObj>();
42
42
  const fn = getObjFactory();
43
43
  const v1 = fn();
44
44
  const [v2] = memoValue(fn, ['bar', 'baz']);
@@ -3,11 +3,16 @@ import { getCacheEntry } from './getCacheEntry';
3
3
 
4
4
  export type ValueFactory<T> = () => T;
5
5
 
6
- /** signature for the cache function */
7
- export type GetMemoValue<T, TGet = any> = (factory: T | ValueFactory<T>, keys: any[]) => [T, GetMemoValue<TGet>];
6
+ /**
7
+ * Signature for the cache function. While the implementation is generic, it can run in two modes:
8
+ * - Typed: the cache will enforce the type of both the factory and returned value
9
+ * - Untyped: the cache will infer the type on each call from the factory return value
10
+ */
11
+ export type GetTypedMemoValue<T> = (factory: T | ValueFactory<T>, keys: unknown[]) => [T, GetTypedMemoValue<T>];
12
+ export type GetMemoValue = <T>(factory: T | ValueFactory<T>, keys: unknown[]) => [T, GetMemoValue];
8
13
 
9
14
  /** base node used to remember references when a globalKey is set */
10
- const _baseEntry: CacheEntry<any> = {};
15
+ const _baseEntry: CacheEntry = {};
11
16
 
12
17
  /**
13
18
  * Primary functional worker used to implement the caching pattern
@@ -16,13 +21,13 @@ const _baseEntry: CacheEntry<any> = {};
16
21
  * @param factory - generally a function who's results will be cached, and returned via the set of keys
17
22
  * @param keys - an ordered array of values of any type, used as keys to look up the entry
18
23
  */
19
- function getMemoValueWorker<T, TGet = any>(entry: CacheEntry<any>, factory: T | ValueFactory<T>, keys: any[]): [T, GetMemoValue<TGet>] {
24
+ function getMemoValueWorker<T>(entry: CacheEntry, factory: T | ValueFactory<T>, keys: unknown[]): [T, GetMemoValue] {
20
25
  const foundEntry = getCacheEntry(entry, keys);
21
26
  // check the key being set, not the value to disambiguate an undefined factory result/value from never having run the factory
22
- if (!foundEntry.hasOwnProperty('value')) {
27
+ if (!Object.prototype.hasOwnProperty.call(foundEntry, 'value')) {
23
28
  foundEntry.value = typeof factory === 'function' ? (factory as ValueFactory<T>)() : factory;
24
29
  }
25
- return [foundEntry.value, (fact: TGet | ValueFactory<TGet>, args: any[]) => getMemoValueWorker<TGet>(foundEntry, fact, args)];
30
+ return [foundEntry.value as T, <U>(fact: U | ValueFactory<U>, args: unknown[]) => getMemoValueWorker<U>(foundEntry, fact, args)];
26
31
  }
27
32
 
28
33
  /**
@@ -31,7 +36,18 @@ function getMemoValueWorker<T, TGet = any>(entry: CacheEntry<any>, factory: T |
31
36
  * @param globalKey - optional object reference to use as a key for this cache. If specified it can be used
32
37
  * to retrieve the same cache from the global call. If not specified the returned cache will be completely isolated.
33
38
  */
34
- export function getMemoCache<T = any>(globalKey?: object): GetMemoValue<T> {
39
+ export function getMemoCache(globalKey?: object): GetMemoValue {
40
+ const entry = globalKey ? getCacheEntry(_baseEntry, [globalKey]) : {};
41
+ return (fact, args) => getMemoValueWorker(entry, fact, args);
42
+ }
43
+
44
+ /**
45
+ * Get a typed memo cache instance, this can either be completely self-contained or associated with a global key
46
+ *
47
+ * @param globalKey - optional object reference to use as a key for this cache. If specified it can be used
48
+ * to retrieve the same cache from the global call. If not specified the returned cache will be completely isolated.
49
+ */
50
+ export function getTypedMemoCache<T>(globalKey?: object): GetTypedMemoValue<T> {
35
51
  const entry = globalKey ? getCacheEntry(_baseEntry, [globalKey]) : {};
36
- return (fact: T | ValueFactory<T>, args: any[]) => getMemoValueWorker<T>(entry, fact, args);
52
+ return (fact, args) => getMemoValueWorker(entry, fact, args);
37
53
  }
@@ -7,9 +7,9 @@ import { getMemoCache } from './getMemoCache';
7
7
  // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
8
8
  export function memoize<T extends Function>(fn: T): T {
9
9
  // create a unique cache that will be captured in the closure
10
- const cache = getMemoCache<any>();
10
+ const cache = getMemoCache();
11
11
  // create the closure which wraps the calling function
12
- const closure = (...args: any[]) => {
12
+ const closure = (...args: unknown[]) => {
13
13
  return cache(() => fn(...(args || [])), args)[0];
14
14
  };
15
15
  // now return that closure strongly typed as the function.
@@ -1,4 +0,0 @@
1
- export type { GetMemoValue } from './getMemoCache';
2
- export { getMemoCache } from './getMemoCache';
3
- export { memoize } from './memoize';
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memo-cache/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
@@ -1,3 +0,0 @@
1
- export { getMemoCache } from './getMemoCache';
2
- export { memoize } from './memoize';
3
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memo-cache/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
@@ -1,4 +0,0 @@
1
- export type { GetMemoValue } from './getMemoCache';
2
- export { getMemoCache } from './getMemoCache';
3
- export { memoize } from './memoize';
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memo-cache/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.memoize = exports.getMemoCache = void 0;
4
- var getMemoCache_1 = require("./getMemoCache");
5
- Object.defineProperty(exports, "getMemoCache", { enumerable: true, get: function () { return getMemoCache_1.getMemoCache; } });
6
- var memoize_1 = require("./memoize");
7
- Object.defineProperty(exports, "memoize", { enumerable: true, get: function () { return memoize_1.memoize; } });
8
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memo-cache/index.ts"],"names":[],"mappings":";;;AACA,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,qCAAoC;AAA3B,kGAAA,OAAO,OAAA"}
@@ -1,3 +0,0 @@
1
- export type { GetMemoValue } from './getMemoCache';
2
- export { getMemoCache } from './getMemoCache';
3
- export { memoize } from './memoize';