@fluentui-react-native/framework-base 0.1.1
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/CHANGELOG.json +20 -0
- package/CHANGELOG.md +13 -0
- package/README.md +20 -0
- package/babel.config.js +1 -0
- package/eslint.config.js +3 -0
- package/lib/immutable-merge/Merge.d.ts +78 -0
- package/lib/immutable-merge/Merge.d.ts.map +1 -0
- package/lib/immutable-merge/Merge.js +179 -0
- package/lib/immutable-merge/Merge.js.map +1 -0
- package/lib/immutable-merge/Merge.test.d.ts +2 -0
- package/lib/immutable-merge/Merge.test.d.ts.map +1 -0
- package/lib/immutable-merge/Merge.test.js +262 -0
- package/lib/immutable-merge/Merge.test.js.map +1 -0
- package/lib/index.d.ts +9 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +7 -0
- package/lib/index.js.map +1 -0
- package/lib/memo-cache/getCacheEntry.d.ts +22 -0
- package/lib/memo-cache/getCacheEntry.d.ts.map +1 -0
- package/lib/memo-cache/getCacheEntry.js +49 -0
- package/lib/memo-cache/getCacheEntry.js.map +1 -0
- package/lib/memo-cache/getCacheEntry.test.d.ts +2 -0
- package/lib/memo-cache/getCacheEntry.test.d.ts.map +1 -0
- package/lib/memo-cache/getCacheEntry.test.js +95 -0
- package/lib/memo-cache/getCacheEntry.test.js.map +1 -0
- package/lib/memo-cache/getMemoCache.d.ts +11 -0
- package/lib/memo-cache/getMemoCache.d.ts.map +1 -0
- package/lib/memo-cache/getMemoCache.js +29 -0
- package/lib/memo-cache/getMemoCache.js.map +1 -0
- package/lib/memo-cache/getMemoCache.test.d.ts +2 -0
- package/lib/memo-cache/getMemoCache.test.d.ts.map +1 -0
- package/lib/memo-cache/getMemoCache.test.js +78 -0
- package/lib/memo-cache/getMemoCache.test.js.map +1 -0
- package/lib/memo-cache/index.d.ts +4 -0
- package/lib/memo-cache/index.d.ts.map +1 -0
- package/lib/memo-cache/index.js +3 -0
- package/lib/memo-cache/index.js.map +1 -0
- package/lib/memo-cache/memoize.d.ts +6 -0
- package/lib/memo-cache/memoize.d.ts.map +1 -0
- package/lib/memo-cache/memoize.js +17 -0
- package/lib/memo-cache/memoize.js.map +1 -0
- package/lib/memo-cache/memoize.test.d.ts +2 -0
- package/lib/memo-cache/memoize.test.d.ts.map +1 -0
- package/lib/memo-cache/memoize.test.js +45 -0
- package/lib/memo-cache/memoize.test.js.map +1 -0
- package/lib/merge-props/index.d.ts +4 -0
- package/lib/merge-props/index.d.ts.map +1 -0
- package/lib/merge-props/index.js +3 -0
- package/lib/merge-props/index.js.map +1 -0
- package/lib/merge-props/mergeProps.d.ts +6 -0
- package/lib/merge-props/mergeProps.d.ts.map +1 -0
- package/lib/merge-props/mergeProps.js +17 -0
- package/lib/merge-props/mergeProps.js.map +1 -0
- package/lib/merge-props/mergeStyles.d.ts +16 -0
- package/lib/merge-props/mergeStyles.d.ts.map +1 -0
- package/lib/merge-props/mergeStyles.js +32 -0
- package/lib/merge-props/mergeStyles.js.map +1 -0
- package/lib/merge-props/mergeStyles.test.d.ts +2 -0
- package/lib/merge-props/mergeStyles.test.d.ts.map +1 -0
- package/lib/merge-props/mergeStyles.test.js +94 -0
- package/lib/merge-props/mergeStyles.test.js.map +1 -0
- package/lib/merge-props/mergeStyles.types.d.ts +12 -0
- package/lib/merge-props/mergeStyles.types.d.ts.map +1 -0
- package/lib/merge-props/mergeStyles.types.js +2 -0
- package/lib/merge-props/mergeStyles.types.js.map +1 -0
- package/lib-commonjs/immutable-merge/Merge.d.ts +78 -0
- package/lib-commonjs/immutable-merge/Merge.d.ts.map +1 -0
- package/lib-commonjs/immutable-merge/Merge.js +186 -0
- package/lib-commonjs/immutable-merge/Merge.js.map +1 -0
- package/lib-commonjs/immutable-merge/Merge.test.d.ts +2 -0
- package/lib-commonjs/immutable-merge/Merge.test.d.ts.map +1 -0
- package/lib-commonjs/immutable-merge/Merge.test.js +264 -0
- package/lib-commonjs/immutable-merge/Merge.test.js.map +1 -0
- package/lib-commonjs/index.d.ts +9 -0
- package/lib-commonjs/index.d.ts.map +1 -0
- package/lib-commonjs/index.js +18 -0
- package/lib-commonjs/index.js.map +1 -0
- package/lib-commonjs/memo-cache/getCacheEntry.d.ts +22 -0
- package/lib-commonjs/memo-cache/getCacheEntry.d.ts.map +1 -0
- package/lib-commonjs/memo-cache/getCacheEntry.js +53 -0
- package/lib-commonjs/memo-cache/getCacheEntry.js.map +1 -0
- package/lib-commonjs/memo-cache/getCacheEntry.test.d.ts +2 -0
- package/lib-commonjs/memo-cache/getCacheEntry.test.d.ts.map +1 -0
- package/lib-commonjs/memo-cache/getCacheEntry.test.js +97 -0
- package/lib-commonjs/memo-cache/getCacheEntry.test.js.map +1 -0
- package/lib-commonjs/memo-cache/getMemoCache.d.ts +11 -0
- package/lib-commonjs/memo-cache/getMemoCache.d.ts.map +1 -0
- package/lib-commonjs/memo-cache/getMemoCache.js +33 -0
- package/lib-commonjs/memo-cache/getMemoCache.js.map +1 -0
- package/lib-commonjs/memo-cache/getMemoCache.test.d.ts +2 -0
- package/lib-commonjs/memo-cache/getMemoCache.test.d.ts.map +1 -0
- package/lib-commonjs/memo-cache/getMemoCache.test.js +80 -0
- package/lib-commonjs/memo-cache/getMemoCache.test.js.map +1 -0
- package/lib-commonjs/memo-cache/index.d.ts +4 -0
- package/lib-commonjs/memo-cache/index.d.ts.map +1 -0
- package/lib-commonjs/memo-cache/index.js +8 -0
- package/lib-commonjs/memo-cache/index.js.map +1 -0
- package/lib-commonjs/memo-cache/memoize.d.ts +6 -0
- package/lib-commonjs/memo-cache/memoize.d.ts.map +1 -0
- package/lib-commonjs/memo-cache/memoize.js +21 -0
- package/lib-commonjs/memo-cache/memoize.js.map +1 -0
- package/lib-commonjs/memo-cache/memoize.test.d.ts +2 -0
- package/lib-commonjs/memo-cache/memoize.test.d.ts.map +1 -0
- package/lib-commonjs/memo-cache/memoize.test.js +47 -0
- package/lib-commonjs/memo-cache/memoize.test.js.map +1 -0
- package/lib-commonjs/merge-props/index.d.ts +4 -0
- package/lib-commonjs/merge-props/index.d.ts.map +1 -0
- package/lib-commonjs/merge-props/index.js +8 -0
- package/lib-commonjs/merge-props/index.js.map +1 -0
- package/lib-commonjs/merge-props/mergeProps.d.ts +6 -0
- package/lib-commonjs/merge-props/mergeProps.d.ts.map +1 -0
- package/lib-commonjs/merge-props/mergeProps.js +21 -0
- package/lib-commonjs/merge-props/mergeProps.js.map +1 -0
- package/lib-commonjs/merge-props/mergeStyles.d.ts +16 -0
- package/lib-commonjs/merge-props/mergeStyles.d.ts.map +1 -0
- package/lib-commonjs/merge-props/mergeStyles.js +38 -0
- package/lib-commonjs/merge-props/mergeStyles.js.map +1 -0
- package/lib-commonjs/merge-props/mergeStyles.test.d.ts +2 -0
- package/lib-commonjs/merge-props/mergeStyles.test.d.ts.map +1 -0
- package/lib-commonjs/merge-props/mergeStyles.test.js +96 -0
- package/lib-commonjs/merge-props/mergeStyles.test.js.map +1 -0
- package/lib-commonjs/merge-props/mergeStyles.types.d.ts +12 -0
- package/lib-commonjs/merge-props/mergeStyles.types.d.ts.map +1 -0
- package/lib-commonjs/merge-props/mergeStyles.types.js +3 -0
- package/lib-commonjs/merge-props/mergeStyles.types.js.map +1 -0
- package/package.json +58 -0
- package/src/immutable-merge/Merge.test.ts +342 -0
- package/src/immutable-merge/Merge.ts +255 -0
- package/src/index.ts +20 -0
- package/src/memo-cache/getCacheEntry.test.ts +120 -0
- package/src/memo-cache/getCacheEntry.ts +67 -0
- package/src/memo-cache/getMemoCache.test.ts +91 -0
- package/src/memo-cache/getMemoCache.ts +37 -0
- package/src/memo-cache/index.ts +3 -0
- package/src/memo-cache/memoize.test.ts +48 -0
- package/src/memo-cache/memoize.ts +17 -0
- package/src/merge-props/index.ts +3 -0
- package/src/merge-props/mergeProps.ts +20 -0
- package/src/merge-props/mergeStyles.test.ts +124 -0
- package/src/merge-props/mergeStyles.ts +40 -0
- package/src/merge-props/mergeStyles.types.ts +9 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export type CacheEntry<T, TGet = any> = {
|
|
2
|
+
/** stores the cached value if any */
|
|
3
|
+
value?: T;
|
|
4
|
+
/** entry used for undefined and null values, these both collapse to the same type */
|
|
5
|
+
empty?: CacheEntry<TGet>;
|
|
6
|
+
/** entry used for the case where the array of args is null or length 0 */
|
|
7
|
+
noargs?: CacheEntry<TGet>;
|
|
8
|
+
/** all remaining non-object types are keyed as strings for lookups */
|
|
9
|
+
str?: {
|
|
10
|
+
[key: string]: CacheEntry<TGet>;
|
|
11
|
+
};
|
|
12
|
+
/** object types are keyed in a weak map on object identity */
|
|
13
|
+
obj?: WeakMap<object, TGet>;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Given a base entry, either traverse or build the cache tree that matches the provided args
|
|
17
|
+
*
|
|
18
|
+
* @param entry - entry to use as the base of the cache walk
|
|
19
|
+
* @param args - array of arguments to use to progress deeper into the cache
|
|
20
|
+
*/
|
|
21
|
+
export declare function getCacheEntry<T, TGet = any>(entry: CacheEntry<T>, args: any[]): CacheEntry<TGet>;
|
|
22
|
+
//# sourceMappingURL=getCacheEntry.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
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
|
+
/**
|
|
13
|
+
* Step one level deeper in the cache, based on the key value from the current location
|
|
14
|
+
*
|
|
15
|
+
* @param entry - base entry to work from
|
|
16
|
+
* @param val - value to use as the key for progressing to the next level of the cache
|
|
17
|
+
*/
|
|
18
|
+
function jumpToCacheEntry(entry, val) {
|
|
19
|
+
if (val === undefined || val === null) {
|
|
20
|
+
// undefined or null just routes directly to the empty object. This avoids the issues of string collisions with 'null' or 'undefined'
|
|
21
|
+
// when using the string key map, it also avoids creating the WeakMap (since null is technically typoef object), particularly in cases
|
|
22
|
+
// where null is just being set on non-object types.
|
|
23
|
+
return ensureAndReturn(entry, 'empty');
|
|
24
|
+
}
|
|
25
|
+
if (typeof val === 'object' || typeof val === 'function') {
|
|
26
|
+
// objects and functions will be treated as key values in a WeakMap
|
|
27
|
+
const byObj = (entry.obj = entry.obj || new WeakMap());
|
|
28
|
+
return byObj.get(val) || byObj.set(val, {}).get(val);
|
|
29
|
+
}
|
|
30
|
+
// otherwise convert everything to a string and store it in the str object (using it as a map)
|
|
31
|
+
const key = val + '';
|
|
32
|
+
const byString = ensureAndReturn(entry, 'str');
|
|
33
|
+
return (byString[key] = byString[key] || {});
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Given a base entry, either traverse or build the cache tree that matches the provided args
|
|
37
|
+
*
|
|
38
|
+
* @param entry - entry to use as the base of the cache walk
|
|
39
|
+
* @param args - array of arguments to use to progress deeper into the cache
|
|
40
|
+
*/
|
|
41
|
+
export function getCacheEntry(entry, args) {
|
|
42
|
+
// in the case where the args array exists and is > 0 length:
|
|
43
|
+
// - walk the cache from entry, like a linked list, jumping to the next entry by key, building it up as you go
|
|
44
|
+
// - otherwise if there are no args just use the noargs branch
|
|
45
|
+
return args && args.length > 0
|
|
46
|
+
? args.reduce((previous, arg) => jumpToCacheEntry(previous, arg), entry)
|
|
47
|
+
: ensureAndReturn(entry, 'noargs');
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=getCacheEntry.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getCacheEntry.test.d.ts","sourceRoot":"","sources":["../../src/memo-cache/getCacheEntry.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { getCacheEntry } from './getCacheEntry';
|
|
2
|
+
function compareResults(base, args, argsNoMatch) {
|
|
3
|
+
const e1 = getCacheEntry(base, args);
|
|
4
|
+
expect(getCacheEntry(base, args)).toBe(e1);
|
|
5
|
+
if (argsNoMatch) {
|
|
6
|
+
expect(getCacheEntry(base, argsNoMatch)).not.toBe(e1);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
describe('Memo cache unit tests', () => {
|
|
10
|
+
test('undefined args to return noargs', () => {
|
|
11
|
+
const base = {};
|
|
12
|
+
expect(getCacheEntry(base, undefined)).toBe(base.noargs);
|
|
13
|
+
});
|
|
14
|
+
test('empty args array to return noargs entry', () => {
|
|
15
|
+
const base = {};
|
|
16
|
+
expect(getCacheEntry(base, [])).toBe(base.noargs);
|
|
17
|
+
});
|
|
18
|
+
test('undefined goes to empty entry', () => {
|
|
19
|
+
const base = {};
|
|
20
|
+
expect(getCacheEntry(base, [undefined])).toBe(base.empty);
|
|
21
|
+
});
|
|
22
|
+
test('null to go to empty entry', () => {
|
|
23
|
+
const base = {};
|
|
24
|
+
expect(getCacheEntry(base, [null])).toBe(base.empty);
|
|
25
|
+
});
|
|
26
|
+
test('string gets keyed correctly', () => {
|
|
27
|
+
const base = {};
|
|
28
|
+
const key = 'foo';
|
|
29
|
+
expect(getCacheEntry(base, [key])).toBe(base.str[key]);
|
|
30
|
+
});
|
|
31
|
+
test('number gets keyed correctly', () => {
|
|
32
|
+
const base = {};
|
|
33
|
+
const val = 235;
|
|
34
|
+
const key = val + '';
|
|
35
|
+
expect(getCacheEntry(base, [val])).toBe(base.str[key]);
|
|
36
|
+
});
|
|
37
|
+
test('bool gets keyed correctly', () => {
|
|
38
|
+
const base = {};
|
|
39
|
+
const val = true;
|
|
40
|
+
const key = val + '';
|
|
41
|
+
expect(getCacheEntry(base, [val])).toBe(base.str[key]);
|
|
42
|
+
});
|
|
43
|
+
test('false bool gets keyed correctly', () => {
|
|
44
|
+
const base = {};
|
|
45
|
+
const val = false;
|
|
46
|
+
const key = val + '';
|
|
47
|
+
expect(getCacheEntry(base, [val])).toBe(base.str[key]);
|
|
48
|
+
});
|
|
49
|
+
test('object gets keyed correctly', () => {
|
|
50
|
+
const base = {};
|
|
51
|
+
const key = {};
|
|
52
|
+
expect(getCacheEntry(base, [key])).toBe(base.obj.get(key));
|
|
53
|
+
});
|
|
54
|
+
test('function gets keyed correctly', () => {
|
|
55
|
+
const base = {};
|
|
56
|
+
const key = () => {
|
|
57
|
+
return 'hello world';
|
|
58
|
+
};
|
|
59
|
+
expect(getCacheEntry(base, [key])).toBe(base.obj.get(key));
|
|
60
|
+
});
|
|
61
|
+
test('basic string retrieval', () => {
|
|
62
|
+
compareResults({}, ['hello', 'world'], ['hello world']);
|
|
63
|
+
});
|
|
64
|
+
test('mixed keys with strings', () => {
|
|
65
|
+
compareResults({}, ['hello', 1, true, undefined, 'world'], ['hello', 1, true, '', 'world']);
|
|
66
|
+
});
|
|
67
|
+
test('basic object matches', () => {
|
|
68
|
+
const obj = {};
|
|
69
|
+
compareResults({}, [obj]);
|
|
70
|
+
});
|
|
71
|
+
test('mixed object and string matches', () => {
|
|
72
|
+
const obj = {};
|
|
73
|
+
compareResults({}, [obj, 'hello', 1, 'world']);
|
|
74
|
+
});
|
|
75
|
+
test('mixed obj and strings with obj at end', () => {
|
|
76
|
+
const obj = {};
|
|
77
|
+
const obj2 = {};
|
|
78
|
+
compareResults({}, ['hello', 1, 'world', obj], ['hello', 1, 'world', obj2]);
|
|
79
|
+
});
|
|
80
|
+
test('hybrid sets', () => {
|
|
81
|
+
const obj = {};
|
|
82
|
+
const obj2 = {};
|
|
83
|
+
compareResults({}, ['hello', obj, 'world', 1, false, obj2, undefined]);
|
|
84
|
+
});
|
|
85
|
+
test('sub cache on object', () => {
|
|
86
|
+
const obj = {};
|
|
87
|
+
const args1 = ['hello', obj];
|
|
88
|
+
const base = {};
|
|
89
|
+
const subRoot = getCacheEntry(base, args1);
|
|
90
|
+
const args2 = ['world', base];
|
|
91
|
+
const target = getCacheEntry(subRoot, args2);
|
|
92
|
+
expect(getCacheEntry(base, [...args1, ...args2])).toBe(target);
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
//# sourceMappingURL=getCacheEntry.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getCacheEntry.test.js","sourceRoot":"","sources":["../../src/memo-cache/getCacheEntry.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAQhD,SAAS,cAAc,CAAC,IAAe,EAAE,IAAW,EAAE,WAAmB;IACvE,MAAM,EAAE,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACrC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE3C,IAAI,WAAW,EAAE;QACf,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACvD;AACH,CAAC;AAED,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC3C,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACnD,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACzC,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACrC,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACvC,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,KAAK,CAAC;QAClB,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACvC,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,GAAG,CAAC;QAChB,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;QACrB,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACrC,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC;QACjB,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;QACrB,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC3C,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,KAAK,CAAC;QAClB,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;QACrB,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACvC,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACzC,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,GAAG,EAAE;YACf,OAAO,aAAa,CAAC;QACvB,CAAC,CAAC;QACF,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAClC,cAAc,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACnC,cAAc,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9F,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAChC,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,cAAc,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC3C,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,cAAc,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;QACjD,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,cAAc,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE;QACvB,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,cAAc,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAC/B,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC7C,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
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>];
|
|
4
|
+
/**
|
|
5
|
+
* Get a memo cache instance, this can either be completely self-contained or associated with a global key
|
|
6
|
+
*
|
|
7
|
+
* @param globalKey - optional object reference to use as a key for this cache. If specified it can be used
|
|
8
|
+
* to retrieve the same cache from the global call. If not specified the returned cache will be completely isolated.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getMemoCache<T = any>(globalKey?: object): GetMemoValue<T>;
|
|
11
|
+
//# sourceMappingURL=getMemoCache.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { getCacheEntry } from './getCacheEntry';
|
|
2
|
+
/** base node used to remember references when a globalKey is set */
|
|
3
|
+
const _baseEntry = {};
|
|
4
|
+
/**
|
|
5
|
+
* Primary functional worker used to implement the caching pattern
|
|
6
|
+
*
|
|
7
|
+
* @param entry - entry to use as the base of the cache traversal
|
|
8
|
+
* @param factory - generally a function who's results will be cached, and returned via the set of keys
|
|
9
|
+
* @param keys - an ordered array of values of any type, used as keys to look up the entry
|
|
10
|
+
*/
|
|
11
|
+
function getMemoValueWorker(entry, factory, keys) {
|
|
12
|
+
const foundEntry = getCacheEntry(entry, keys);
|
|
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')) {
|
|
15
|
+
foundEntry.value = typeof factory === 'function' ? factory() : factory;
|
|
16
|
+
}
|
|
17
|
+
return [foundEntry.value, (fact, args) => getMemoValueWorker(foundEntry, fact, args)];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Get a memo cache instance, this can either be completely self-contained or associated with a global key
|
|
21
|
+
*
|
|
22
|
+
* @param globalKey - optional object reference to use as a key for this cache. If specified it can be used
|
|
23
|
+
* to retrieve the same cache from the global call. If not specified the returned cache will be completely isolated.
|
|
24
|
+
*/
|
|
25
|
+
export function getMemoCache(globalKey) {
|
|
26
|
+
const entry = globalKey ? getCacheEntry(_baseEntry, [globalKey]) : {};
|
|
27
|
+
return (fact, args) => getMemoValueWorker(entry, fact, args);
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=getMemoCache.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getMemoCache.test.d.ts","sourceRoot":"","sources":["../../src/memo-cache/getMemoCache.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { getMemoCache } from './getMemoCache';
|
|
2
|
+
function getObjFactory() {
|
|
3
|
+
const obj = { id: 0 };
|
|
4
|
+
return () => ({
|
|
5
|
+
id: obj.id++,
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
describe('getMemoCache unit tests', () => {
|
|
9
|
+
test('memoValue with null function', () => {
|
|
10
|
+
const memoValue = getMemoCache();
|
|
11
|
+
const [val] = memoValue(null, ['foo', 'bar']);
|
|
12
|
+
expect(val).toBeNull();
|
|
13
|
+
});
|
|
14
|
+
test('memoValue with undefined', () => {
|
|
15
|
+
const memoValue = getMemoCache();
|
|
16
|
+
const [val] = memoValue(undefined, ['foo', 'bar']);
|
|
17
|
+
expect(val).toBeUndefined();
|
|
18
|
+
});
|
|
19
|
+
test('memoValue with string', () => {
|
|
20
|
+
const memoValue = getMemoCache();
|
|
21
|
+
const [val] = memoValue('foo', ['bar', 'baz']);
|
|
22
|
+
expect(val).toEqual('foo');
|
|
23
|
+
});
|
|
24
|
+
test('memoValue with object', () => {
|
|
25
|
+
const memoValue = getMemoCache();
|
|
26
|
+
const obj = { foo: 'hello', bar: 2, baz: 'you' };
|
|
27
|
+
const [val] = memoValue(obj, ['hello', obj]);
|
|
28
|
+
expect(val).toBe(obj);
|
|
29
|
+
});
|
|
30
|
+
test('memoValue executes function', () => {
|
|
31
|
+
const memoValue = getMemoCache();
|
|
32
|
+
const fn = getObjFactory();
|
|
33
|
+
const v1 = fn();
|
|
34
|
+
const [v2] = memoValue(fn, ['bar', 'baz']);
|
|
35
|
+
expect(v1).not.toBe(v2);
|
|
36
|
+
expect(v1.id).not.toEqual(v2.id);
|
|
37
|
+
});
|
|
38
|
+
test('memo calls function only once', () => {
|
|
39
|
+
const memoValue = getMemoCache();
|
|
40
|
+
const fn = getObjFactory();
|
|
41
|
+
const keys = ['hello', 'world'];
|
|
42
|
+
const [o1] = memoValue(fn, keys);
|
|
43
|
+
const [o2] = memoValue(fn, keys);
|
|
44
|
+
expect(o2).toBe(o1);
|
|
45
|
+
});
|
|
46
|
+
test('memo calls function only once for empty inputs', () => {
|
|
47
|
+
const memoValue = getMemoCache();
|
|
48
|
+
const fn = getObjFactory();
|
|
49
|
+
const [o1] = memoValue(fn, undefined);
|
|
50
|
+
const [o2] = memoValue(fn, undefined);
|
|
51
|
+
expect(o2).toBe(o1);
|
|
52
|
+
});
|
|
53
|
+
test('sub caches are separate', () => {
|
|
54
|
+
const memoValue = getMemoCache();
|
|
55
|
+
const base1 = {};
|
|
56
|
+
const base2 = {};
|
|
57
|
+
const [, getCache1] = memoValue(null, [base1]);
|
|
58
|
+
const [, getCache2] = memoValue(null, [base2]);
|
|
59
|
+
const objKey = {};
|
|
60
|
+
const fn = getObjFactory();
|
|
61
|
+
const [o1] = getCache1(fn, [objKey]);
|
|
62
|
+
const [o2] = getCache2(fn, [objKey]);
|
|
63
|
+
const [o3] = getCache2(fn, [objKey]);
|
|
64
|
+
expect(o1).not.toBe(o2);
|
|
65
|
+
expect(o3).toBe(o2);
|
|
66
|
+
});
|
|
67
|
+
test('sub caches work on branches', () => {
|
|
68
|
+
const memoValue = getMemoCache();
|
|
69
|
+
const keys1 = [{}, 2, 'hello'];
|
|
70
|
+
const keys2 = [{}, true];
|
|
71
|
+
const fn = getObjFactory();
|
|
72
|
+
const [, getMemoValue] = memoValue(null, keys1);
|
|
73
|
+
const [val1] = getMemoValue(fn, keys2);
|
|
74
|
+
const [val2] = memoValue(fn, [...keys1, ...keys2]);
|
|
75
|
+
expect(val2).toBe(val1);
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
//# sourceMappingURL=getMemoCache.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getMemoCache.test.js","sourceRoot":"","sources":["../../src/memo-cache/getMemoCache.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memoize.d.ts","sourceRoot":"","sources":["../../src/memo-cache/memoize.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,wBAAgB,OAAO,CAAC,CAAC,SAAS,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CASpD"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { getMemoCache } from './getMemoCache';
|
|
2
|
+
/**
|
|
3
|
+
* This wraps a function to memoize the results using the standard javascript memoization pattern
|
|
4
|
+
* @param fn - function to memoize
|
|
5
|
+
*/
|
|
6
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type
|
|
7
|
+
export function memoize(fn) {
|
|
8
|
+
// create a unique cache that will be captured in the closure
|
|
9
|
+
const cache = getMemoCache();
|
|
10
|
+
// create the closure which wraps the calling function
|
|
11
|
+
const closure = (...args) => {
|
|
12
|
+
return cache(() => fn(...(args || [])), args)[0];
|
|
13
|
+
};
|
|
14
|
+
// now return that closure strongly typed as the function.
|
|
15
|
+
return closure;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=memoize.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memoize.test.d.ts","sourceRoot":"","sources":["../../src/memo-cache/memoize.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { memoize } from './memoize';
|
|
2
|
+
let _globalCalls = 0;
|
|
3
|
+
describe('Memoize unit tests', () => {
|
|
4
|
+
test('simple function no args', () => {
|
|
5
|
+
const noArgsFn = memoize(() => {
|
|
6
|
+
return ++_globalCalls;
|
|
7
|
+
});
|
|
8
|
+
const result1 = noArgsFn();
|
|
9
|
+
expect(noArgsFn()).toEqual(result1);
|
|
10
|
+
});
|
|
11
|
+
test('simple function 1 arg', () => {
|
|
12
|
+
const incrementFn = memoize((bump) => {
|
|
13
|
+
++_globalCalls;
|
|
14
|
+
return bump + 1;
|
|
15
|
+
});
|
|
16
|
+
expect(incrementFn(3)).toEqual(4);
|
|
17
|
+
const calls = _globalCalls;
|
|
18
|
+
incrementFn(3);
|
|
19
|
+
expect(_globalCalls).toEqual(calls);
|
|
20
|
+
incrementFn(4);
|
|
21
|
+
expect(_globalCalls).toEqual(calls + 1);
|
|
22
|
+
incrementFn(4);
|
|
23
|
+
expect(_globalCalls).toEqual(calls + 1);
|
|
24
|
+
});
|
|
25
|
+
test('void function 2 args', () => {
|
|
26
|
+
const voidFn = memoize((a, b) => {
|
|
27
|
+
if (a) {
|
|
28
|
+
++_globalCalls;
|
|
29
|
+
}
|
|
30
|
+
else if (b) {
|
|
31
|
+
++_globalCalls;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
++_globalCalls;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
voidFn(3, 'hello');
|
|
38
|
+
const calls = _globalCalls;
|
|
39
|
+
voidFn(3, 'hello');
|
|
40
|
+
expect(_globalCalls).toEqual(calls);
|
|
41
|
+
voidFn(3, 'world');
|
|
42
|
+
expect(_globalCalls).toEqual(calls + 1);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=memoize.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memoize.test.js","sourceRoot":"","sources":["../../src/memo-cache/memoize.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,IAAI,YAAY,GAAG,CAAC,CAAC;AAErB,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE;YAC5B,OAAO,EAAE,YAAY,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAC;QAC3B,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACjC,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,IAAY,EAAE,EAAE;YAC3C,EAAE,YAAY,CAAC;YACf,OAAO,IAAI,GAAG,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,YAAY,CAAC;QAC3B,WAAW,CAAC,CAAC,CAAC,CAAC;QACf,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,WAAW,CAAC,CAAC,CAAC,CAAC;QACf,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACxC,WAAW,CAAC,CAAC,CAAC,CAAC;QACf,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAChC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE;YAC9C,IAAI,CAAC,EAAE;gBACL,EAAE,YAAY,CAAC;aAChB;iBAAM,IAAI,CAAC,EAAE;gBACZ,EAAE,YAAY,CAAC;aAChB;iBAAM;gBACL,EAAE,YAAY,CAAC;aAChB;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACnB,MAAM,KAAK,GAAG,YAAY,CAAC;QAC3B,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACnB,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACnB,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/merge-props/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/merge-props/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeProps.d.ts","sourceRoot":"","sources":["../../src/merge-props/mergeProps.ts"],"names":[],"mappings":"AAaA;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,MAAM,CAE3E"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { immutableMergeCore, filterToObjects } from '../immutable-merge/Merge';
|
|
2
|
+
import { mergeStyles } from './mergeStyles';
|
|
3
|
+
/**
|
|
4
|
+
* Props will not deeply merge with the exception of a style property. Also className needs to be handled specially.
|
|
5
|
+
*/
|
|
6
|
+
const mergePropsOptions = {
|
|
7
|
+
className: (...names) => names.filter((v) => v && typeof v === 'string').join(' '),
|
|
8
|
+
style: mergeStyles,
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Merge props together, flattening and merging styles as appropriate
|
|
12
|
+
* @param props - props to merge together
|
|
13
|
+
*/
|
|
14
|
+
export function mergeProps(...props) {
|
|
15
|
+
return immutableMergeCore(mergePropsOptions, ...filterToObjects(props));
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=mergeProps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeProps.js","sourceRoot":"","sources":["../../src/merge-props/mergeProps.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE/E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;GAEG;AACH,MAAM,iBAAiB,GAAiB;IACtC,SAAS,EAAE,CAAC,GAAG,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACzF,KAAK,EAAE,WAAW;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAS,GAAG,KAA6B;IACjE,OAAO,kBAAkB,CAAC,iBAAiB,EAAE,GAAG,eAAe,CAAS,KAAK,CAAC,CAAC,CAAC;AAClF,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { StyleProp } from './mergeStyles.types';
|
|
2
|
+
/**
|
|
3
|
+
* Take a react-native style, which may be a recursive array, and return as a flattened
|
|
4
|
+
* style. This is analagous to the flatten routine that is part of the style sheet API
|
|
5
|
+
*
|
|
6
|
+
* @param style - StyleProp<TStyle> to flatten, this can be a TStyle or an array
|
|
7
|
+
*/
|
|
8
|
+
export declare function flattenStyle(style: StyleProp<object>): object;
|
|
9
|
+
/**
|
|
10
|
+
* Merge styles together into a single flat object and optionally finalize them, can also be used to finalize a single style
|
|
11
|
+
*
|
|
12
|
+
* @param styles - array of styles to merge together. The styles will be flattened as part of the process
|
|
13
|
+
*/
|
|
14
|
+
export declare function mergeAndFlattenStyles(...styles: StyleProp<object>[]): object | undefined;
|
|
15
|
+
export declare function mergeStyles(...styles: StyleProp<object>[]): object | undefined;
|
|
16
|
+
//# sourceMappingURL=mergeStyles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeStyles.d.ts","sourceRoot":"","sources":["../../src/merge-props/mergeStyles.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAE7D;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,SAAS,CAOxF;AAID,wBAAgB,WAAW,CAAC,GAAG,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,SAAS,CAQ9E"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { immutableMerge } from '../immutable-merge/Merge';
|
|
2
|
+
import { getMemoCache } from '../memo-cache/getMemoCache';
|
|
3
|
+
/**
|
|
4
|
+
* Take a react-native style, which may be a recursive array, and return as a flattened
|
|
5
|
+
* style. This is analagous to the flatten routine that is part of the style sheet API
|
|
6
|
+
*
|
|
7
|
+
* @param style - StyleProp<TStyle> to flatten, this can be a TStyle or an array
|
|
8
|
+
*/
|
|
9
|
+
export function flattenStyle(style) {
|
|
10
|
+
return Array.isArray(style) ? immutableMerge(...style.map((v) => flattenStyle(v))) : style || {};
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Merge styles together into a single flat object and optionally finalize them, can also be used to finalize a single style
|
|
14
|
+
*
|
|
15
|
+
* @param styles - array of styles to merge together. The styles will be flattened as part of the process
|
|
16
|
+
*/
|
|
17
|
+
export function mergeAndFlattenStyles(...styles) {
|
|
18
|
+
// baseline merge and flatten the objects
|
|
19
|
+
return immutableMerge(...styles.map((styleProp) => {
|
|
20
|
+
return flattenStyle(styleProp);
|
|
21
|
+
}));
|
|
22
|
+
}
|
|
23
|
+
const _styleCache = getMemoCache();
|
|
24
|
+
export function mergeStyles(...styles) {
|
|
25
|
+
// filter the style set to just objects (which might be arrays or plain style objects)
|
|
26
|
+
const inputs = styles.filter((s) => typeof s === 'object');
|
|
27
|
+
// now memo the results if there is more than one element or if the one element is an array
|
|
28
|
+
return inputs.length > 1 || (inputs.length === 1 && Array.isArray(inputs[0]))
|
|
29
|
+
? _styleCache(() => mergeAndFlattenStyles(undefined, ...inputs), inputs)[0]
|
|
30
|
+
: inputs[0] || {};
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=mergeStyles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeStyles.js","sourceRoot":"","sources":["../../src/merge-props/mergeStyles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI1D;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;AACnG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAG,MAA2B;IAClE,yCAAyC;IACzC,OAAO,cAAc,CACnB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,SAA4B,EAAE,EAAE;QAC7C,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,MAAM,WAAW,GAAG,YAAY,EAAE,CAAC;AAEnC,MAAM,UAAU,WAAW,CAAC,GAAG,MAA2B;IACxD,sFAAsF;IACtF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAa,CAAC;IAEvE,2FAA2F;IAC3F,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeStyles.test.d.ts","sourceRoot":"","sources":["../../src/merge-props/mergeStyles.test.ts"],"names":[],"mappings":""}
|