@wordpress/data 9.17.0 → 9.18.1-next.79a6196f.0
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.md +2 -0
- package/LICENSE.md +1 -1
- package/build/components/use-select/index.js +26 -6
- package/build/components/use-select/index.js.map +1 -1
- package/build-module/components/use-select/index.js +26 -6
- package/build-module/components/use-select/index.js.map +1 -1
- package/build-types/components/use-select/index.d.ts.map +1 -1
- package/package.json +9 -9
- package/src/components/use-select/index.js +29 -6
- package/src/components/use-select/test/index.js +43 -47
- package/src/components/with-select/test/index.js +27 -64
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
package/LICENSE.md
CHANGED
|
@@ -46,6 +46,14 @@ function Store(registry, suspense) {
|
|
|
46
46
|
let lastIsAsync;
|
|
47
47
|
let subscriber;
|
|
48
48
|
let didWarnUnstableReference;
|
|
49
|
+
const storeStatesOnMount = new Map();
|
|
50
|
+
function getStoreState(name) {
|
|
51
|
+
var _registry$stores$name;
|
|
52
|
+
// If there's no store property (custom generic store), return an empty
|
|
53
|
+
// object. When comparing the state, the empty objects will cause the
|
|
54
|
+
// equality check to fail, setting `lastMapResultValid` to false.
|
|
55
|
+
return (_registry$stores$name = registry.stores[name]?.store?.getState?.()) !== null && _registry$stores$name !== void 0 ? _registry$stores$name : {};
|
|
56
|
+
}
|
|
49
57
|
const createSubscriber = stores => {
|
|
50
58
|
// The set of stores the `subscribe` function is supposed to subscribe to. Here it is
|
|
51
59
|
// initialized, and then the `updateStores` function can add new stores to it.
|
|
@@ -56,12 +64,21 @@ function Store(registry, suspense) {
|
|
|
56
64
|
// keep a set of active subscriptions;
|
|
57
65
|
const activeSubscriptions = new Set();
|
|
58
66
|
function subscribe(listener) {
|
|
59
|
-
//
|
|
60
|
-
// call `getValue` after subscribing, to detect store
|
|
61
|
-
// in the interval between the `getValue` call
|
|
62
|
-
// the subscription, which is slightly
|
|
63
|
-
// second `getValue` call will
|
|
64
|
-
|
|
67
|
+
// Maybe invalidate the value right after subscription was created.
|
|
68
|
+
// React will call `getValue` after subscribing, to detect store
|
|
69
|
+
// updates that happened in the interval between the `getValue` call
|
|
70
|
+
// during render and creating the subscription, which is slightly
|
|
71
|
+
// delayed. We need to ensure that this second `getValue` call will
|
|
72
|
+
// compute a fresh value only if any of the store states have
|
|
73
|
+
// changed in the meantime.
|
|
74
|
+
if (lastMapResultValid) {
|
|
75
|
+
for (const name of activeStores) {
|
|
76
|
+
if (storeStatesOnMount.get(name) !== getStoreState(name)) {
|
|
77
|
+
lastMapResultValid = false;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
storeStatesOnMount.clear();
|
|
65
82
|
const onStoreChange = () => {
|
|
66
83
|
// Invalidate the value on store update, so that a fresh value is computed.
|
|
67
84
|
lastMapResultValid = false;
|
|
@@ -137,6 +154,9 @@ function Store(registry, suspense) {
|
|
|
137
154
|
}
|
|
138
155
|
}
|
|
139
156
|
if (!subscriber) {
|
|
157
|
+
for (const name of listeningStores.current) {
|
|
158
|
+
storeStatesOnMount.set(name, getStoreState(name));
|
|
159
|
+
}
|
|
140
160
|
subscriber = createSubscriber(listeningStores.current);
|
|
141
161
|
} else {
|
|
142
162
|
subscriber.updateStores(listeningStores.current);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_priorityQueue","require","_element","_isShallowEqual","_interopRequireDefault","_useRegistry","_useAsyncMode","renderQueue","createQueue","Store","registry","suspense","select","suspendSelect","queueContext","lastMapSelect","lastMapResult","lastMapResultValid","lastIsAsync","subscriber","didWarnUnstableReference","createSubscriber","stores","activeStores","activeSubscriptions","Set","subscribe","listener","onStoreChange","onChange","add","unsubs","subscribeStore","storeName","push","delete","unsub","values","cancel","updateStores","newStores","newStore","includes","subscription","mapSelect","isAsync","updateValue","listeningStores","current","mapResult","__unstableMarkListeningStores","process","env","NODE_ENV","secondMapResult","isShallowEqual","console","warn","getValue","useStaticSelect","useRegistry","useMappingSelect","deps","useAsyncMode","store","useMemo","selector","useCallback","result","useSyncExternalStore","useDebugValue","useSelect","staticSelectMode","staticSelectModeRef","useRef","prevMode","nextMode","Error","useSuspenseSelect"],"sources":["@wordpress/data/src/components/use-select/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createQueue } from '@wordpress/priority-queue';\nimport {\n\tuseRef,\n\tuseCallback,\n\tuseMemo,\n\tuseSyncExternalStore,\n\tuseDebugValue,\n} from '@wordpress/element';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport useRegistry from '../registry-provider/use-registry';\nimport useAsyncMode from '../async-mode-provider/use-async-mode';\n\nconst renderQueue = createQueue();\n\n/**\n * @typedef {import('../../types').StoreDescriptor<C>} StoreDescriptor\n * @template {import('../../types').AnyConfig} C\n */\n/**\n * @typedef {import('../../types').ReduxStoreConfig<State,Actions,Selectors>} ReduxStoreConfig\n * @template State\n * @template {Record<string,import('../../types').ActionCreator>} Actions\n * @template Selectors\n */\n/** @typedef {import('../../types').MapSelect} MapSelect */\n/**\n * @typedef {import('../../types').UseSelectReturn<T>} UseSelectReturn\n * @template {MapSelect|StoreDescriptor<any>} T\n */\n\nfunction Store( registry, suspense ) {\n\tconst select = suspense ? registry.suspendSelect : registry.select;\n\tconst queueContext = {};\n\tlet lastMapSelect;\n\tlet lastMapResult;\n\tlet lastMapResultValid = false;\n\tlet lastIsAsync;\n\tlet subscriber;\n\tlet didWarnUnstableReference;\n\n\tconst createSubscriber = ( stores ) => {\n\t\t// The set of stores the `subscribe` function is supposed to subscribe to. Here it is\n\t\t// initialized, and then the `updateStores` function can add new stores to it.\n\t\tconst activeStores = [ ...stores ];\n\n\t\t// The `subscribe` function, which is passed to the `useSyncExternalStore` hook, could\n\t\t// be called multiple times to establish multiple subscriptions. That's why we need to\n\t\t// keep a set of active subscriptions;\n\t\tconst activeSubscriptions = new Set();\n\n\t\tfunction subscribe( listener ) {\n\t\t\t// Invalidate the value right after subscription was created. React will\n\t\t\t// call `getValue` after subscribing, to detect store updates that happened\n\t\t\t// in the interval between the `getValue` call during render and creating\n\t\t\t// the subscription, which is slightly delayed. We need to ensure that this\n\t\t\t// second `getValue` call will compute a fresh value.\n\t\t\tlastMapResultValid = false;\n\n\t\t\tconst onStoreChange = () => {\n\t\t\t\t// Invalidate the value on store update, so that a fresh value is computed.\n\t\t\t\tlastMapResultValid = false;\n\t\t\t\tlistener();\n\t\t\t};\n\n\t\t\tconst onChange = () => {\n\t\t\t\tif ( lastIsAsync ) {\n\t\t\t\t\trenderQueue.add( queueContext, onStoreChange );\n\t\t\t\t} else {\n\t\t\t\t\tonStoreChange();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst unsubs = [];\n\t\t\tfunction subscribeStore( storeName ) {\n\t\t\t\tunsubs.push( registry.subscribe( onChange, storeName ) );\n\t\t\t}\n\n\t\t\tfor ( const storeName of activeStores ) {\n\t\t\t\tsubscribeStore( storeName );\n\t\t\t}\n\n\t\t\tactiveSubscriptions.add( subscribeStore );\n\n\t\t\treturn () => {\n\t\t\t\tactiveSubscriptions.delete( subscribeStore );\n\n\t\t\t\tfor ( const unsub of unsubs.values() ) {\n\t\t\t\t\t// The return value of the subscribe function could be undefined if the store is a custom generic store.\n\t\t\t\t\tunsub?.();\n\t\t\t\t}\n\t\t\t\t// Cancel existing store updates that were already scheduled.\n\t\t\t\trenderQueue.cancel( queueContext );\n\t\t\t};\n\t\t}\n\n\t\t// Check if `newStores` contains some stores we're not subscribed to yet, and add them.\n\t\tfunction updateStores( newStores ) {\n\t\t\tfor ( const newStore of newStores ) {\n\t\t\t\tif ( activeStores.includes( newStore ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// New `subscribe` calls will subscribe to `newStore`, too.\n\t\t\t\tactiveStores.push( newStore );\n\n\t\t\t\t// Add `newStore` to existing subscriptions.\n\t\t\t\tfor ( const subscription of activeSubscriptions ) {\n\t\t\t\t\tsubscription( newStore );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn { subscribe, updateStores };\n\t};\n\n\treturn ( mapSelect, isAsync ) => {\n\t\tfunction updateValue() {\n\t\t\t// If the last value is valid, and the `mapSelect` callback hasn't changed,\n\t\t\t// then we can safely return the cached value. The value can change only on\n\t\t\t// store update, and in that case value will be invalidated by the listener.\n\t\t\tif ( lastMapResultValid && mapSelect === lastMapSelect ) {\n\t\t\t\treturn lastMapResult;\n\t\t\t}\n\n\t\t\tconst listeningStores = { current: null };\n\t\t\tconst mapResult = registry.__unstableMarkListeningStores(\n\t\t\t\t() => mapSelect( select, registry ),\n\t\t\t\tlisteningStores\n\t\t\t);\n\n\t\t\tif ( process.env.NODE_ENV === 'development' ) {\n\t\t\t\tif ( ! didWarnUnstableReference ) {\n\t\t\t\t\tconst secondMapResult = mapSelect( select, registry );\n\t\t\t\t\tif ( ! isShallowEqual( mapResult, secondMapResult ) ) {\n\t\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t`The 'useSelect' hook returns different values when called with the same state and parameters. This can lead to unnecessary rerenders.`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tdidWarnUnstableReference = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( ! subscriber ) {\n\t\t\t\tsubscriber = createSubscriber( listeningStores.current );\n\t\t\t} else {\n\t\t\t\tsubscriber.updateStores( listeningStores.current );\n\t\t\t}\n\n\t\t\t// If the new value is shallow-equal to the old one, keep the old one so\n\t\t\t// that we don't trigger unwanted updates that do a `===` check.\n\t\t\tif ( ! isShallowEqual( lastMapResult, mapResult ) ) {\n\t\t\t\tlastMapResult = mapResult;\n\t\t\t}\n\t\t\tlastMapSelect = mapSelect;\n\t\t\tlastMapResultValid = true;\n\t\t}\n\n\t\tfunction getValue() {\n\t\t\t// Update the value in case it's been invalidated or `mapSelect` has changed.\n\t\t\tupdateValue();\n\t\t\treturn lastMapResult;\n\t\t}\n\n\t\t// When transitioning from async to sync mode, cancel existing store updates\n\t\t// that have been scheduled, and invalidate the value so that it's freshly\n\t\t// computed. It might have been changed by the update we just cancelled.\n\t\tif ( lastIsAsync && ! isAsync ) {\n\t\t\tlastMapResultValid = false;\n\t\t\trenderQueue.cancel( queueContext );\n\t\t}\n\n\t\tupdateValue();\n\n\t\tlastIsAsync = isAsync;\n\n\t\t// Return a pair of functions that can be passed to `useSyncExternalStore`.\n\t\treturn { subscribe: subscriber.subscribe, getValue };\n\t};\n}\n\nfunction useStaticSelect( storeName ) {\n\treturn useRegistry().select( storeName );\n}\n\nfunction useMappingSelect( suspense, mapSelect, deps ) {\n\tconst registry = useRegistry();\n\tconst isAsync = useAsyncMode();\n\tconst store = useMemo(\n\t\t() => Store( registry, suspense ),\n\t\t[ registry, suspense ]\n\t);\n\n\t// These are \"pass-through\" dependencies from the parent hook,\n\t// and the parent should catch any hook rule violations.\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\tconst selector = useCallback( mapSelect, deps );\n\tconst { subscribe, getValue } = store( selector, isAsync );\n\tconst result = useSyncExternalStore( subscribe, getValue, getValue );\n\tuseDebugValue( result );\n\treturn result;\n}\n\n/**\n * Custom react hook for retrieving props from registered selectors.\n *\n * In general, this custom React hook follows the\n * [rules of hooks](https://reactjs.org/docs/hooks-rules.html).\n *\n * @template {MapSelect | StoreDescriptor<any>} T\n * @param {T} mapSelect Function called on every state change. The returned value is\n * exposed to the component implementing this hook. The function\n * receives the `registry.select` method on the first argument\n * and the `registry` on the second argument.\n * When a store key is passed, all selectors for the store will be\n * returned. This is only meant for usage of these selectors in event\n * callbacks, not for data needed to create the element tree.\n * @param {unknown[]} deps If provided, this memoizes the mapSelect so the same `mapSelect` is\n * invoked on every state change unless the dependencies change.\n *\n * @example\n * ```js\n * import { useSelect } from '@wordpress/data';\n * import { store as myCustomStore } from 'my-custom-store';\n *\n * function HammerPriceDisplay( { currency } ) {\n * const price = useSelect( ( select ) => {\n * return select( myCustomStore ).getPrice( 'hammer', currency );\n * }, [ currency ] );\n * return new Intl.NumberFormat( 'en-US', {\n * style: 'currency',\n * currency,\n * } ).format( price );\n * }\n *\n * // Rendered in the application:\n * // <HammerPriceDisplay currency=\"USD\" />\n * ```\n *\n * In the above example, when `HammerPriceDisplay` is rendered into an\n * application, the price will be retrieved from the store state using the\n * `mapSelect` callback on `useSelect`. If the currency prop changes then\n * any price in the state for that currency is retrieved. If the currency prop\n * doesn't change and other props are passed in that do change, the price will\n * not change because the dependency is just the currency.\n *\n * When data is only used in an event callback, the data should not be retrieved\n * on render, so it may be useful to get the selectors function instead.\n *\n * **Don't use `useSelect` this way when calling the selectors in the render\n * function because your component won't re-render on a data change.**\n *\n * ```js\n * import { useSelect } from '@wordpress/data';\n * import { store as myCustomStore } from 'my-custom-store';\n *\n * function Paste( { children } ) {\n * const { getSettings } = useSelect( myCustomStore );\n * function onPaste() {\n * // Do something with the settings.\n * const settings = getSettings();\n * }\n * return <div onPaste={ onPaste }>{ children }</div>;\n * }\n * ```\n * @return {UseSelectReturn<T>} A custom react hook.\n */\nexport default function useSelect( mapSelect, deps ) {\n\t// On initial call, on mount, determine the mode of this `useSelect` call\n\t// and then never allow it to change on subsequent updates.\n\tconst staticSelectMode = typeof mapSelect !== 'function';\n\tconst staticSelectModeRef = useRef( staticSelectMode );\n\n\tif ( staticSelectMode !== staticSelectModeRef.current ) {\n\t\tconst prevMode = staticSelectModeRef.current ? 'static' : 'mapping';\n\t\tconst nextMode = staticSelectMode ? 'static' : 'mapping';\n\t\tthrow new Error(\n\t\t\t`Switching useSelect from ${ prevMode } to ${ nextMode } is not allowed`\n\t\t);\n\t}\n\n\t/* eslint-disable react-hooks/rules-of-hooks */\n\t// `staticSelectMode` is not allowed to change during the hook instance's,\n\t// lifetime, so the rules of hooks are not really violated.\n\treturn staticSelectMode\n\t\t? useStaticSelect( mapSelect )\n\t\t: useMappingSelect( false, mapSelect, deps );\n\t/* eslint-enable react-hooks/rules-of-hooks */\n}\n\n/**\n * A variant of the `useSelect` hook that has the same API, but will throw a\n * suspense Promise if any of the called selectors is in an unresolved state.\n *\n * @param {Function} mapSelect Function called on every state change. The\n * returned value is exposed to the component\n * using this hook. The function receives the\n * `registry.suspendSelect` method as the first\n * argument and the `registry` as the second one.\n * @param {Array} deps A dependency array used to memoize the `mapSelect`\n * so that the same `mapSelect` is invoked on every\n * state change unless the dependencies change.\n *\n * @return {Object} Data object returned by the `mapSelect` function.\n */\nexport function useSuspenseSelect( mapSelect, deps ) {\n\treturn useMappingSelect( true, mapSelect, deps );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_priorityQueue","require","_element","_isShallowEqual","_interopRequireDefault","_useRegistry","_useAsyncMode","renderQueue","createQueue","Store","registry","suspense","select","suspendSelect","queueContext","lastMapSelect","lastMapResult","lastMapResultValid","lastIsAsync","subscriber","didWarnUnstableReference","storeStatesOnMount","Map","getStoreState","name","_registry$stores$name","stores","store","getState","createSubscriber","activeStores","activeSubscriptions","Set","subscribe","listener","get","clear","onStoreChange","onChange","add","unsubs","subscribeStore","storeName","push","delete","unsub","values","cancel","updateStores","newStores","newStore","includes","subscription","mapSelect","isAsync","updateValue","listeningStores","current","mapResult","__unstableMarkListeningStores","process","env","NODE_ENV","secondMapResult","isShallowEqual","console","warn","set","getValue","useStaticSelect","useRegistry","useMappingSelect","deps","useAsyncMode","useMemo","selector","useCallback","result","useSyncExternalStore","useDebugValue","useSelect","staticSelectMode","staticSelectModeRef","useRef","prevMode","nextMode","Error","useSuspenseSelect"],"sources":["@wordpress/data/src/components/use-select/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createQueue } from '@wordpress/priority-queue';\nimport {\n\tuseRef,\n\tuseCallback,\n\tuseMemo,\n\tuseSyncExternalStore,\n\tuseDebugValue,\n} from '@wordpress/element';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport useRegistry from '../registry-provider/use-registry';\nimport useAsyncMode from '../async-mode-provider/use-async-mode';\n\nconst renderQueue = createQueue();\n\n/**\n * @typedef {import('../../types').StoreDescriptor<C>} StoreDescriptor\n * @template {import('../../types').AnyConfig} C\n */\n/**\n * @typedef {import('../../types').ReduxStoreConfig<State,Actions,Selectors>} ReduxStoreConfig\n * @template State\n * @template {Record<string,import('../../types').ActionCreator>} Actions\n * @template Selectors\n */\n/** @typedef {import('../../types').MapSelect} MapSelect */\n/**\n * @typedef {import('../../types').UseSelectReturn<T>} UseSelectReturn\n * @template {MapSelect|StoreDescriptor<any>} T\n */\n\nfunction Store( registry, suspense ) {\n\tconst select = suspense ? registry.suspendSelect : registry.select;\n\tconst queueContext = {};\n\tlet lastMapSelect;\n\tlet lastMapResult;\n\tlet lastMapResultValid = false;\n\tlet lastIsAsync;\n\tlet subscriber;\n\tlet didWarnUnstableReference;\n\tconst storeStatesOnMount = new Map();\n\n\tfunction getStoreState( name ) {\n\t\t// If there's no store property (custom generic store), return an empty\n\t\t// object. When comparing the state, the empty objects will cause the\n\t\t// equality check to fail, setting `lastMapResultValid` to false.\n\t\treturn registry.stores[ name ]?.store?.getState?.() ?? {};\n\t}\n\n\tconst createSubscriber = ( stores ) => {\n\t\t// The set of stores the `subscribe` function is supposed to subscribe to. Here it is\n\t\t// initialized, and then the `updateStores` function can add new stores to it.\n\t\tconst activeStores = [ ...stores ];\n\n\t\t// The `subscribe` function, which is passed to the `useSyncExternalStore` hook, could\n\t\t// be called multiple times to establish multiple subscriptions. That's why we need to\n\t\t// keep a set of active subscriptions;\n\t\tconst activeSubscriptions = new Set();\n\n\t\tfunction subscribe( listener ) {\n\t\t\t// Maybe invalidate the value right after subscription was created.\n\t\t\t// React will call `getValue` after subscribing, to detect store\n\t\t\t// updates that happened in the interval between the `getValue` call\n\t\t\t// during render and creating the subscription, which is slightly\n\t\t\t// delayed. We need to ensure that this second `getValue` call will\n\t\t\t// compute a fresh value only if any of the store states have\n\t\t\t// changed in the meantime.\n\t\t\tif ( lastMapResultValid ) {\n\t\t\t\tfor ( const name of activeStores ) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tstoreStatesOnMount.get( name ) !== getStoreState( name )\n\t\t\t\t\t) {\n\t\t\t\t\t\tlastMapResultValid = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tstoreStatesOnMount.clear();\n\n\t\t\tconst onStoreChange = () => {\n\t\t\t\t// Invalidate the value on store update, so that a fresh value is computed.\n\t\t\t\tlastMapResultValid = false;\n\t\t\t\tlistener();\n\t\t\t};\n\n\t\t\tconst onChange = () => {\n\t\t\t\tif ( lastIsAsync ) {\n\t\t\t\t\trenderQueue.add( queueContext, onStoreChange );\n\t\t\t\t} else {\n\t\t\t\t\tonStoreChange();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst unsubs = [];\n\t\t\tfunction subscribeStore( storeName ) {\n\t\t\t\tunsubs.push( registry.subscribe( onChange, storeName ) );\n\t\t\t}\n\n\t\t\tfor ( const storeName of activeStores ) {\n\t\t\t\tsubscribeStore( storeName );\n\t\t\t}\n\n\t\t\tactiveSubscriptions.add( subscribeStore );\n\n\t\t\treturn () => {\n\t\t\t\tactiveSubscriptions.delete( subscribeStore );\n\n\t\t\t\tfor ( const unsub of unsubs.values() ) {\n\t\t\t\t\t// The return value of the subscribe function could be undefined if the store is a custom generic store.\n\t\t\t\t\tunsub?.();\n\t\t\t\t}\n\t\t\t\t// Cancel existing store updates that were already scheduled.\n\t\t\t\trenderQueue.cancel( queueContext );\n\t\t\t};\n\t\t}\n\n\t\t// Check if `newStores` contains some stores we're not subscribed to yet, and add them.\n\t\tfunction updateStores( newStores ) {\n\t\t\tfor ( const newStore of newStores ) {\n\t\t\t\tif ( activeStores.includes( newStore ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// New `subscribe` calls will subscribe to `newStore`, too.\n\t\t\t\tactiveStores.push( newStore );\n\n\t\t\t\t// Add `newStore` to existing subscriptions.\n\t\t\t\tfor ( const subscription of activeSubscriptions ) {\n\t\t\t\t\tsubscription( newStore );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn { subscribe, updateStores };\n\t};\n\n\treturn ( mapSelect, isAsync ) => {\n\t\tfunction updateValue() {\n\t\t\t// If the last value is valid, and the `mapSelect` callback hasn't changed,\n\t\t\t// then we can safely return the cached value. The value can change only on\n\t\t\t// store update, and in that case value will be invalidated by the listener.\n\t\t\tif ( lastMapResultValid && mapSelect === lastMapSelect ) {\n\t\t\t\treturn lastMapResult;\n\t\t\t}\n\n\t\t\tconst listeningStores = { current: null };\n\t\t\tconst mapResult = registry.__unstableMarkListeningStores(\n\t\t\t\t() => mapSelect( select, registry ),\n\t\t\t\tlisteningStores\n\t\t\t);\n\n\t\t\tif ( process.env.NODE_ENV === 'development' ) {\n\t\t\t\tif ( ! didWarnUnstableReference ) {\n\t\t\t\t\tconst secondMapResult = mapSelect( select, registry );\n\t\t\t\t\tif ( ! isShallowEqual( mapResult, secondMapResult ) ) {\n\t\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t`The 'useSelect' hook returns different values when called with the same state and parameters. This can lead to unnecessary rerenders.`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tdidWarnUnstableReference = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( ! subscriber ) {\n\t\t\t\tfor ( const name of listeningStores.current ) {\n\t\t\t\t\tstoreStatesOnMount.set( name, getStoreState( name ) );\n\t\t\t\t}\n\t\t\t\tsubscriber = createSubscriber( listeningStores.current );\n\t\t\t} else {\n\t\t\t\tsubscriber.updateStores( listeningStores.current );\n\t\t\t}\n\n\t\t\t// If the new value is shallow-equal to the old one, keep the old one so\n\t\t\t// that we don't trigger unwanted updates that do a `===` check.\n\t\t\tif ( ! isShallowEqual( lastMapResult, mapResult ) ) {\n\t\t\t\tlastMapResult = mapResult;\n\t\t\t}\n\t\t\tlastMapSelect = mapSelect;\n\t\t\tlastMapResultValid = true;\n\t\t}\n\n\t\tfunction getValue() {\n\t\t\t// Update the value in case it's been invalidated or `mapSelect` has changed.\n\t\t\tupdateValue();\n\t\t\treturn lastMapResult;\n\t\t}\n\n\t\t// When transitioning from async to sync mode, cancel existing store updates\n\t\t// that have been scheduled, and invalidate the value so that it's freshly\n\t\t// computed. It might have been changed by the update we just cancelled.\n\t\tif ( lastIsAsync && ! isAsync ) {\n\t\t\tlastMapResultValid = false;\n\t\t\trenderQueue.cancel( queueContext );\n\t\t}\n\n\t\tupdateValue();\n\n\t\tlastIsAsync = isAsync;\n\n\t\t// Return a pair of functions that can be passed to `useSyncExternalStore`.\n\t\treturn { subscribe: subscriber.subscribe, getValue };\n\t};\n}\n\nfunction useStaticSelect( storeName ) {\n\treturn useRegistry().select( storeName );\n}\n\nfunction useMappingSelect( suspense, mapSelect, deps ) {\n\tconst registry = useRegistry();\n\tconst isAsync = useAsyncMode();\n\tconst store = useMemo(\n\t\t() => Store( registry, suspense ),\n\t\t[ registry, suspense ]\n\t);\n\n\t// These are \"pass-through\" dependencies from the parent hook,\n\t// and the parent should catch any hook rule violations.\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\tconst selector = useCallback( mapSelect, deps );\n\tconst { subscribe, getValue } = store( selector, isAsync );\n\tconst result = useSyncExternalStore( subscribe, getValue, getValue );\n\tuseDebugValue( result );\n\treturn result;\n}\n\n/**\n * Custom react hook for retrieving props from registered selectors.\n *\n * In general, this custom React hook follows the\n * [rules of hooks](https://reactjs.org/docs/hooks-rules.html).\n *\n * @template {MapSelect | StoreDescriptor<any>} T\n * @param {T} mapSelect Function called on every state change. The returned value is\n * exposed to the component implementing this hook. The function\n * receives the `registry.select` method on the first argument\n * and the `registry` on the second argument.\n * When a store key is passed, all selectors for the store will be\n * returned. This is only meant for usage of these selectors in event\n * callbacks, not for data needed to create the element tree.\n * @param {unknown[]} deps If provided, this memoizes the mapSelect so the same `mapSelect` is\n * invoked on every state change unless the dependencies change.\n *\n * @example\n * ```js\n * import { useSelect } from '@wordpress/data';\n * import { store as myCustomStore } from 'my-custom-store';\n *\n * function HammerPriceDisplay( { currency } ) {\n * const price = useSelect( ( select ) => {\n * return select( myCustomStore ).getPrice( 'hammer', currency );\n * }, [ currency ] );\n * return new Intl.NumberFormat( 'en-US', {\n * style: 'currency',\n * currency,\n * } ).format( price );\n * }\n *\n * // Rendered in the application:\n * // <HammerPriceDisplay currency=\"USD\" />\n * ```\n *\n * In the above example, when `HammerPriceDisplay` is rendered into an\n * application, the price will be retrieved from the store state using the\n * `mapSelect` callback on `useSelect`. If the currency prop changes then\n * any price in the state for that currency is retrieved. If the currency prop\n * doesn't change and other props are passed in that do change, the price will\n * not change because the dependency is just the currency.\n *\n * When data is only used in an event callback, the data should not be retrieved\n * on render, so it may be useful to get the selectors function instead.\n *\n * **Don't use `useSelect` this way when calling the selectors in the render\n * function because your component won't re-render on a data change.**\n *\n * ```js\n * import { useSelect } from '@wordpress/data';\n * import { store as myCustomStore } from 'my-custom-store';\n *\n * function Paste( { children } ) {\n * const { getSettings } = useSelect( myCustomStore );\n * function onPaste() {\n * // Do something with the settings.\n * const settings = getSettings();\n * }\n * return <div onPaste={ onPaste }>{ children }</div>;\n * }\n * ```\n * @return {UseSelectReturn<T>} A custom react hook.\n */\nexport default function useSelect( mapSelect, deps ) {\n\t// On initial call, on mount, determine the mode of this `useSelect` call\n\t// and then never allow it to change on subsequent updates.\n\tconst staticSelectMode = typeof mapSelect !== 'function';\n\tconst staticSelectModeRef = useRef( staticSelectMode );\n\n\tif ( staticSelectMode !== staticSelectModeRef.current ) {\n\t\tconst prevMode = staticSelectModeRef.current ? 'static' : 'mapping';\n\t\tconst nextMode = staticSelectMode ? 'static' : 'mapping';\n\t\tthrow new Error(\n\t\t\t`Switching useSelect from ${ prevMode } to ${ nextMode } is not allowed`\n\t\t);\n\t}\n\n\t/* eslint-disable react-hooks/rules-of-hooks */\n\t// `staticSelectMode` is not allowed to change during the hook instance's,\n\t// lifetime, so the rules of hooks are not really violated.\n\treturn staticSelectMode\n\t\t? useStaticSelect( mapSelect )\n\t\t: useMappingSelect( false, mapSelect, deps );\n\t/* eslint-enable react-hooks/rules-of-hooks */\n}\n\n/**\n * A variant of the `useSelect` hook that has the same API, but will throw a\n * suspense Promise if any of the called selectors is in an unresolved state.\n *\n * @param {Function} mapSelect Function called on every state change. The\n * returned value is exposed to the component\n * using this hook. The function receives the\n * `registry.suspendSelect` method as the first\n * argument and the `registry` as the second one.\n * @param {Array} deps A dependency array used to memoize the `mapSelect`\n * so that the same `mapSelect` is invoked on every\n * state change unless the dependencies change.\n *\n * @return {Object} Data object returned by the `mapSelect` function.\n */\nexport function useSuspenseSelect( mapSelect, deps ) {\n\treturn useMappingSelect( true, mapSelect, deps );\n}\n"],"mappings":"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"}
|
|
@@ -37,6 +37,14 @@ function Store(registry, suspense) {
|
|
|
37
37
|
let lastIsAsync;
|
|
38
38
|
let subscriber;
|
|
39
39
|
let didWarnUnstableReference;
|
|
40
|
+
const storeStatesOnMount = new Map();
|
|
41
|
+
function getStoreState(name) {
|
|
42
|
+
var _registry$stores$name;
|
|
43
|
+
// If there's no store property (custom generic store), return an empty
|
|
44
|
+
// object. When comparing the state, the empty objects will cause the
|
|
45
|
+
// equality check to fail, setting `lastMapResultValid` to false.
|
|
46
|
+
return (_registry$stores$name = registry.stores[name]?.store?.getState?.()) !== null && _registry$stores$name !== void 0 ? _registry$stores$name : {};
|
|
47
|
+
}
|
|
40
48
|
const createSubscriber = stores => {
|
|
41
49
|
// The set of stores the `subscribe` function is supposed to subscribe to. Here it is
|
|
42
50
|
// initialized, and then the `updateStores` function can add new stores to it.
|
|
@@ -47,12 +55,21 @@ function Store(registry, suspense) {
|
|
|
47
55
|
// keep a set of active subscriptions;
|
|
48
56
|
const activeSubscriptions = new Set();
|
|
49
57
|
function subscribe(listener) {
|
|
50
|
-
//
|
|
51
|
-
// call `getValue` after subscribing, to detect store
|
|
52
|
-
// in the interval between the `getValue` call
|
|
53
|
-
// the subscription, which is slightly
|
|
54
|
-
// second `getValue` call will
|
|
55
|
-
|
|
58
|
+
// Maybe invalidate the value right after subscription was created.
|
|
59
|
+
// React will call `getValue` after subscribing, to detect store
|
|
60
|
+
// updates that happened in the interval between the `getValue` call
|
|
61
|
+
// during render and creating the subscription, which is slightly
|
|
62
|
+
// delayed. We need to ensure that this second `getValue` call will
|
|
63
|
+
// compute a fresh value only if any of the store states have
|
|
64
|
+
// changed in the meantime.
|
|
65
|
+
if (lastMapResultValid) {
|
|
66
|
+
for (const name of activeStores) {
|
|
67
|
+
if (storeStatesOnMount.get(name) !== getStoreState(name)) {
|
|
68
|
+
lastMapResultValid = false;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
storeStatesOnMount.clear();
|
|
56
73
|
const onStoreChange = () => {
|
|
57
74
|
// Invalidate the value on store update, so that a fresh value is computed.
|
|
58
75
|
lastMapResultValid = false;
|
|
@@ -128,6 +145,9 @@ function Store(registry, suspense) {
|
|
|
128
145
|
}
|
|
129
146
|
}
|
|
130
147
|
if (!subscriber) {
|
|
148
|
+
for (const name of listeningStores.current) {
|
|
149
|
+
storeStatesOnMount.set(name, getStoreState(name));
|
|
150
|
+
}
|
|
131
151
|
subscriber = createSubscriber(listeningStores.current);
|
|
132
152
|
} else {
|
|
133
153
|
subscriber.updateStores(listeningStores.current);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createQueue","useRef","useCallback","useMemo","useSyncExternalStore","useDebugValue","isShallowEqual","useRegistry","useAsyncMode","renderQueue","Store","registry","suspense","select","suspendSelect","queueContext","lastMapSelect","lastMapResult","lastMapResultValid","lastIsAsync","subscriber","didWarnUnstableReference","createSubscriber","stores","activeStores","activeSubscriptions","Set","subscribe","listener","onStoreChange","onChange","add","unsubs","subscribeStore","storeName","push","delete","unsub","values","cancel","updateStores","newStores","newStore","includes","subscription","mapSelect","isAsync","updateValue","listeningStores","current","mapResult","__unstableMarkListeningStores","process","env","NODE_ENV","secondMapResult","console","warn","getValue","useStaticSelect","useMappingSelect","deps","store","selector","result","useSelect","staticSelectMode","staticSelectModeRef","prevMode","nextMode","Error","useSuspenseSelect"],"sources":["@wordpress/data/src/components/use-select/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createQueue } from '@wordpress/priority-queue';\nimport {\n\tuseRef,\n\tuseCallback,\n\tuseMemo,\n\tuseSyncExternalStore,\n\tuseDebugValue,\n} from '@wordpress/element';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport useRegistry from '../registry-provider/use-registry';\nimport useAsyncMode from '../async-mode-provider/use-async-mode';\n\nconst renderQueue = createQueue();\n\n/**\n * @typedef {import('../../types').StoreDescriptor<C>} StoreDescriptor\n * @template {import('../../types').AnyConfig} C\n */\n/**\n * @typedef {import('../../types').ReduxStoreConfig<State,Actions,Selectors>} ReduxStoreConfig\n * @template State\n * @template {Record<string,import('../../types').ActionCreator>} Actions\n * @template Selectors\n */\n/** @typedef {import('../../types').MapSelect} MapSelect */\n/**\n * @typedef {import('../../types').UseSelectReturn<T>} UseSelectReturn\n * @template {MapSelect|StoreDescriptor<any>} T\n */\n\nfunction Store( registry, suspense ) {\n\tconst select = suspense ? registry.suspendSelect : registry.select;\n\tconst queueContext = {};\n\tlet lastMapSelect;\n\tlet lastMapResult;\n\tlet lastMapResultValid = false;\n\tlet lastIsAsync;\n\tlet subscriber;\n\tlet didWarnUnstableReference;\n\n\tconst createSubscriber = ( stores ) => {\n\t\t// The set of stores the `subscribe` function is supposed to subscribe to. Here it is\n\t\t// initialized, and then the `updateStores` function can add new stores to it.\n\t\tconst activeStores = [ ...stores ];\n\n\t\t// The `subscribe` function, which is passed to the `useSyncExternalStore` hook, could\n\t\t// be called multiple times to establish multiple subscriptions. That's why we need to\n\t\t// keep a set of active subscriptions;\n\t\tconst activeSubscriptions = new Set();\n\n\t\tfunction subscribe( listener ) {\n\t\t\t// Invalidate the value right after subscription was created. React will\n\t\t\t// call `getValue` after subscribing, to detect store updates that happened\n\t\t\t// in the interval between the `getValue` call during render and creating\n\t\t\t// the subscription, which is slightly delayed. We need to ensure that this\n\t\t\t// second `getValue` call will compute a fresh value.\n\t\t\tlastMapResultValid = false;\n\n\t\t\tconst onStoreChange = () => {\n\t\t\t\t// Invalidate the value on store update, so that a fresh value is computed.\n\t\t\t\tlastMapResultValid = false;\n\t\t\t\tlistener();\n\t\t\t};\n\n\t\t\tconst onChange = () => {\n\t\t\t\tif ( lastIsAsync ) {\n\t\t\t\t\trenderQueue.add( queueContext, onStoreChange );\n\t\t\t\t} else {\n\t\t\t\t\tonStoreChange();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst unsubs = [];\n\t\t\tfunction subscribeStore( storeName ) {\n\t\t\t\tunsubs.push( registry.subscribe( onChange, storeName ) );\n\t\t\t}\n\n\t\t\tfor ( const storeName of activeStores ) {\n\t\t\t\tsubscribeStore( storeName );\n\t\t\t}\n\n\t\t\tactiveSubscriptions.add( subscribeStore );\n\n\t\t\treturn () => {\n\t\t\t\tactiveSubscriptions.delete( subscribeStore );\n\n\t\t\t\tfor ( const unsub of unsubs.values() ) {\n\t\t\t\t\t// The return value of the subscribe function could be undefined if the store is a custom generic store.\n\t\t\t\t\tunsub?.();\n\t\t\t\t}\n\t\t\t\t// Cancel existing store updates that were already scheduled.\n\t\t\t\trenderQueue.cancel( queueContext );\n\t\t\t};\n\t\t}\n\n\t\t// Check if `newStores` contains some stores we're not subscribed to yet, and add them.\n\t\tfunction updateStores( newStores ) {\n\t\t\tfor ( const newStore of newStores ) {\n\t\t\t\tif ( activeStores.includes( newStore ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// New `subscribe` calls will subscribe to `newStore`, too.\n\t\t\t\tactiveStores.push( newStore );\n\n\t\t\t\t// Add `newStore` to existing subscriptions.\n\t\t\t\tfor ( const subscription of activeSubscriptions ) {\n\t\t\t\t\tsubscription( newStore );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn { subscribe, updateStores };\n\t};\n\n\treturn ( mapSelect, isAsync ) => {\n\t\tfunction updateValue() {\n\t\t\t// If the last value is valid, and the `mapSelect` callback hasn't changed,\n\t\t\t// then we can safely return the cached value. The value can change only on\n\t\t\t// store update, and in that case value will be invalidated by the listener.\n\t\t\tif ( lastMapResultValid && mapSelect === lastMapSelect ) {\n\t\t\t\treturn lastMapResult;\n\t\t\t}\n\n\t\t\tconst listeningStores = { current: null };\n\t\t\tconst mapResult = registry.__unstableMarkListeningStores(\n\t\t\t\t() => mapSelect( select, registry ),\n\t\t\t\tlisteningStores\n\t\t\t);\n\n\t\t\tif ( process.env.NODE_ENV === 'development' ) {\n\t\t\t\tif ( ! didWarnUnstableReference ) {\n\t\t\t\t\tconst secondMapResult = mapSelect( select, registry );\n\t\t\t\t\tif ( ! isShallowEqual( mapResult, secondMapResult ) ) {\n\t\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t`The 'useSelect' hook returns different values when called with the same state and parameters. This can lead to unnecessary rerenders.`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tdidWarnUnstableReference = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( ! subscriber ) {\n\t\t\t\tsubscriber = createSubscriber( listeningStores.current );\n\t\t\t} else {\n\t\t\t\tsubscriber.updateStores( listeningStores.current );\n\t\t\t}\n\n\t\t\t// If the new value is shallow-equal to the old one, keep the old one so\n\t\t\t// that we don't trigger unwanted updates that do a `===` check.\n\t\t\tif ( ! isShallowEqual( lastMapResult, mapResult ) ) {\n\t\t\t\tlastMapResult = mapResult;\n\t\t\t}\n\t\t\tlastMapSelect = mapSelect;\n\t\t\tlastMapResultValid = true;\n\t\t}\n\n\t\tfunction getValue() {\n\t\t\t// Update the value in case it's been invalidated or `mapSelect` has changed.\n\t\t\tupdateValue();\n\t\t\treturn lastMapResult;\n\t\t}\n\n\t\t// When transitioning from async to sync mode, cancel existing store updates\n\t\t// that have been scheduled, and invalidate the value so that it's freshly\n\t\t// computed. It might have been changed by the update we just cancelled.\n\t\tif ( lastIsAsync && ! isAsync ) {\n\t\t\tlastMapResultValid = false;\n\t\t\trenderQueue.cancel( queueContext );\n\t\t}\n\n\t\tupdateValue();\n\n\t\tlastIsAsync = isAsync;\n\n\t\t// Return a pair of functions that can be passed to `useSyncExternalStore`.\n\t\treturn { subscribe: subscriber.subscribe, getValue };\n\t};\n}\n\nfunction useStaticSelect( storeName ) {\n\treturn useRegistry().select( storeName );\n}\n\nfunction useMappingSelect( suspense, mapSelect, deps ) {\n\tconst registry = useRegistry();\n\tconst isAsync = useAsyncMode();\n\tconst store = useMemo(\n\t\t() => Store( registry, suspense ),\n\t\t[ registry, suspense ]\n\t);\n\n\t// These are \"pass-through\" dependencies from the parent hook,\n\t// and the parent should catch any hook rule violations.\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\tconst selector = useCallback( mapSelect, deps );\n\tconst { subscribe, getValue } = store( selector, isAsync );\n\tconst result = useSyncExternalStore( subscribe, getValue, getValue );\n\tuseDebugValue( result );\n\treturn result;\n}\n\n/**\n * Custom react hook for retrieving props from registered selectors.\n *\n * In general, this custom React hook follows the\n * [rules of hooks](https://reactjs.org/docs/hooks-rules.html).\n *\n * @template {MapSelect | StoreDescriptor<any>} T\n * @param {T} mapSelect Function called on every state change. The returned value is\n * exposed to the component implementing this hook. The function\n * receives the `registry.select` method on the first argument\n * and the `registry` on the second argument.\n * When a store key is passed, all selectors for the store will be\n * returned. This is only meant for usage of these selectors in event\n * callbacks, not for data needed to create the element tree.\n * @param {unknown[]} deps If provided, this memoizes the mapSelect so the same `mapSelect` is\n * invoked on every state change unless the dependencies change.\n *\n * @example\n * ```js\n * import { useSelect } from '@wordpress/data';\n * import { store as myCustomStore } from 'my-custom-store';\n *\n * function HammerPriceDisplay( { currency } ) {\n * const price = useSelect( ( select ) => {\n * return select( myCustomStore ).getPrice( 'hammer', currency );\n * }, [ currency ] );\n * return new Intl.NumberFormat( 'en-US', {\n * style: 'currency',\n * currency,\n * } ).format( price );\n * }\n *\n * // Rendered in the application:\n * // <HammerPriceDisplay currency=\"USD\" />\n * ```\n *\n * In the above example, when `HammerPriceDisplay` is rendered into an\n * application, the price will be retrieved from the store state using the\n * `mapSelect` callback on `useSelect`. If the currency prop changes then\n * any price in the state for that currency is retrieved. If the currency prop\n * doesn't change and other props are passed in that do change, the price will\n * not change because the dependency is just the currency.\n *\n * When data is only used in an event callback, the data should not be retrieved\n * on render, so it may be useful to get the selectors function instead.\n *\n * **Don't use `useSelect` this way when calling the selectors in the render\n * function because your component won't re-render on a data change.**\n *\n * ```js\n * import { useSelect } from '@wordpress/data';\n * import { store as myCustomStore } from 'my-custom-store';\n *\n * function Paste( { children } ) {\n * const { getSettings } = useSelect( myCustomStore );\n * function onPaste() {\n * // Do something with the settings.\n * const settings = getSettings();\n * }\n * return <div onPaste={ onPaste }>{ children }</div>;\n * }\n * ```\n * @return {UseSelectReturn<T>} A custom react hook.\n */\nexport default function useSelect( mapSelect, deps ) {\n\t// On initial call, on mount, determine the mode of this `useSelect` call\n\t// and then never allow it to change on subsequent updates.\n\tconst staticSelectMode = typeof mapSelect !== 'function';\n\tconst staticSelectModeRef = useRef( staticSelectMode );\n\n\tif ( staticSelectMode !== staticSelectModeRef.current ) {\n\t\tconst prevMode = staticSelectModeRef.current ? 'static' : 'mapping';\n\t\tconst nextMode = staticSelectMode ? 'static' : 'mapping';\n\t\tthrow new Error(\n\t\t\t`Switching useSelect from ${ prevMode } to ${ nextMode } is not allowed`\n\t\t);\n\t}\n\n\t/* eslint-disable react-hooks/rules-of-hooks */\n\t// `staticSelectMode` is not allowed to change during the hook instance's,\n\t// lifetime, so the rules of hooks are not really violated.\n\treturn staticSelectMode\n\t\t? useStaticSelect( mapSelect )\n\t\t: useMappingSelect( false, mapSelect, deps );\n\t/* eslint-enable react-hooks/rules-of-hooks */\n}\n\n/**\n * A variant of the `useSelect` hook that has the same API, but will throw a\n * suspense Promise if any of the called selectors is in an unresolved state.\n *\n * @param {Function} mapSelect Function called on every state change. The\n * returned value is exposed to the component\n * using this hook. The function receives the\n * `registry.suspendSelect` method as the first\n * argument and the `registry` as the second one.\n * @param {Array} deps A dependency array used to memoize the `mapSelect`\n * so that the same `mapSelect` is invoked on every\n * state change unless the dependencies change.\n *\n * @return {Object} Data object returned by the `mapSelect` function.\n */\nexport function useSuspenseSelect( mapSelect, deps ) {\n\treturn useMappingSelect( true, mapSelect, deps );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["createQueue","useRef","useCallback","useMemo","useSyncExternalStore","useDebugValue","isShallowEqual","useRegistry","useAsyncMode","renderQueue","Store","registry","suspense","select","suspendSelect","queueContext","lastMapSelect","lastMapResult","lastMapResultValid","lastIsAsync","subscriber","didWarnUnstableReference","storeStatesOnMount","Map","getStoreState","name","_registry$stores$name","stores","store","getState","createSubscriber","activeStores","activeSubscriptions","Set","subscribe","listener","get","clear","onStoreChange","onChange","add","unsubs","subscribeStore","storeName","push","delete","unsub","values","cancel","updateStores","newStores","newStore","includes","subscription","mapSelect","isAsync","updateValue","listeningStores","current","mapResult","__unstableMarkListeningStores","process","env","NODE_ENV","secondMapResult","console","warn","set","getValue","useStaticSelect","useMappingSelect","deps","selector","result","useSelect","staticSelectMode","staticSelectModeRef","prevMode","nextMode","Error","useSuspenseSelect"],"sources":["@wordpress/data/src/components/use-select/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createQueue } from '@wordpress/priority-queue';\nimport {\n\tuseRef,\n\tuseCallback,\n\tuseMemo,\n\tuseSyncExternalStore,\n\tuseDebugValue,\n} from '@wordpress/element';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\n\n/**\n * Internal dependencies\n */\nimport useRegistry from '../registry-provider/use-registry';\nimport useAsyncMode from '../async-mode-provider/use-async-mode';\n\nconst renderQueue = createQueue();\n\n/**\n * @typedef {import('../../types').StoreDescriptor<C>} StoreDescriptor\n * @template {import('../../types').AnyConfig} C\n */\n/**\n * @typedef {import('../../types').ReduxStoreConfig<State,Actions,Selectors>} ReduxStoreConfig\n * @template State\n * @template {Record<string,import('../../types').ActionCreator>} Actions\n * @template Selectors\n */\n/** @typedef {import('../../types').MapSelect} MapSelect */\n/**\n * @typedef {import('../../types').UseSelectReturn<T>} UseSelectReturn\n * @template {MapSelect|StoreDescriptor<any>} T\n */\n\nfunction Store( registry, suspense ) {\n\tconst select = suspense ? registry.suspendSelect : registry.select;\n\tconst queueContext = {};\n\tlet lastMapSelect;\n\tlet lastMapResult;\n\tlet lastMapResultValid = false;\n\tlet lastIsAsync;\n\tlet subscriber;\n\tlet didWarnUnstableReference;\n\tconst storeStatesOnMount = new Map();\n\n\tfunction getStoreState( name ) {\n\t\t// If there's no store property (custom generic store), return an empty\n\t\t// object. When comparing the state, the empty objects will cause the\n\t\t// equality check to fail, setting `lastMapResultValid` to false.\n\t\treturn registry.stores[ name ]?.store?.getState?.() ?? {};\n\t}\n\n\tconst createSubscriber = ( stores ) => {\n\t\t// The set of stores the `subscribe` function is supposed to subscribe to. Here it is\n\t\t// initialized, and then the `updateStores` function can add new stores to it.\n\t\tconst activeStores = [ ...stores ];\n\n\t\t// The `subscribe` function, which is passed to the `useSyncExternalStore` hook, could\n\t\t// be called multiple times to establish multiple subscriptions. That's why we need to\n\t\t// keep a set of active subscriptions;\n\t\tconst activeSubscriptions = new Set();\n\n\t\tfunction subscribe( listener ) {\n\t\t\t// Maybe invalidate the value right after subscription was created.\n\t\t\t// React will call `getValue` after subscribing, to detect store\n\t\t\t// updates that happened in the interval between the `getValue` call\n\t\t\t// during render and creating the subscription, which is slightly\n\t\t\t// delayed. We need to ensure that this second `getValue` call will\n\t\t\t// compute a fresh value only if any of the store states have\n\t\t\t// changed in the meantime.\n\t\t\tif ( lastMapResultValid ) {\n\t\t\t\tfor ( const name of activeStores ) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tstoreStatesOnMount.get( name ) !== getStoreState( name )\n\t\t\t\t\t) {\n\t\t\t\t\t\tlastMapResultValid = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tstoreStatesOnMount.clear();\n\n\t\t\tconst onStoreChange = () => {\n\t\t\t\t// Invalidate the value on store update, so that a fresh value is computed.\n\t\t\t\tlastMapResultValid = false;\n\t\t\t\tlistener();\n\t\t\t};\n\n\t\t\tconst onChange = () => {\n\t\t\t\tif ( lastIsAsync ) {\n\t\t\t\t\trenderQueue.add( queueContext, onStoreChange );\n\t\t\t\t} else {\n\t\t\t\t\tonStoreChange();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tconst unsubs = [];\n\t\t\tfunction subscribeStore( storeName ) {\n\t\t\t\tunsubs.push( registry.subscribe( onChange, storeName ) );\n\t\t\t}\n\n\t\t\tfor ( const storeName of activeStores ) {\n\t\t\t\tsubscribeStore( storeName );\n\t\t\t}\n\n\t\t\tactiveSubscriptions.add( subscribeStore );\n\n\t\t\treturn () => {\n\t\t\t\tactiveSubscriptions.delete( subscribeStore );\n\n\t\t\t\tfor ( const unsub of unsubs.values() ) {\n\t\t\t\t\t// The return value of the subscribe function could be undefined if the store is a custom generic store.\n\t\t\t\t\tunsub?.();\n\t\t\t\t}\n\t\t\t\t// Cancel existing store updates that were already scheduled.\n\t\t\t\trenderQueue.cancel( queueContext );\n\t\t\t};\n\t\t}\n\n\t\t// Check if `newStores` contains some stores we're not subscribed to yet, and add them.\n\t\tfunction updateStores( newStores ) {\n\t\t\tfor ( const newStore of newStores ) {\n\t\t\t\tif ( activeStores.includes( newStore ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// New `subscribe` calls will subscribe to `newStore`, too.\n\t\t\t\tactiveStores.push( newStore );\n\n\t\t\t\t// Add `newStore` to existing subscriptions.\n\t\t\t\tfor ( const subscription of activeSubscriptions ) {\n\t\t\t\t\tsubscription( newStore );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn { subscribe, updateStores };\n\t};\n\n\treturn ( mapSelect, isAsync ) => {\n\t\tfunction updateValue() {\n\t\t\t// If the last value is valid, and the `mapSelect` callback hasn't changed,\n\t\t\t// then we can safely return the cached value. The value can change only on\n\t\t\t// store update, and in that case value will be invalidated by the listener.\n\t\t\tif ( lastMapResultValid && mapSelect === lastMapSelect ) {\n\t\t\t\treturn lastMapResult;\n\t\t\t}\n\n\t\t\tconst listeningStores = { current: null };\n\t\t\tconst mapResult = registry.__unstableMarkListeningStores(\n\t\t\t\t() => mapSelect( select, registry ),\n\t\t\t\tlisteningStores\n\t\t\t);\n\n\t\t\tif ( process.env.NODE_ENV === 'development' ) {\n\t\t\t\tif ( ! didWarnUnstableReference ) {\n\t\t\t\t\tconst secondMapResult = mapSelect( select, registry );\n\t\t\t\t\tif ( ! isShallowEqual( mapResult, secondMapResult ) ) {\n\t\t\t\t\t\t// eslint-disable-next-line no-console\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t`The 'useSelect' hook returns different values when called with the same state and parameters. This can lead to unnecessary rerenders.`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tdidWarnUnstableReference = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( ! subscriber ) {\n\t\t\t\tfor ( const name of listeningStores.current ) {\n\t\t\t\t\tstoreStatesOnMount.set( name, getStoreState( name ) );\n\t\t\t\t}\n\t\t\t\tsubscriber = createSubscriber( listeningStores.current );\n\t\t\t} else {\n\t\t\t\tsubscriber.updateStores( listeningStores.current );\n\t\t\t}\n\n\t\t\t// If the new value is shallow-equal to the old one, keep the old one so\n\t\t\t// that we don't trigger unwanted updates that do a `===` check.\n\t\t\tif ( ! isShallowEqual( lastMapResult, mapResult ) ) {\n\t\t\t\tlastMapResult = mapResult;\n\t\t\t}\n\t\t\tlastMapSelect = mapSelect;\n\t\t\tlastMapResultValid = true;\n\t\t}\n\n\t\tfunction getValue() {\n\t\t\t// Update the value in case it's been invalidated or `mapSelect` has changed.\n\t\t\tupdateValue();\n\t\t\treturn lastMapResult;\n\t\t}\n\n\t\t// When transitioning from async to sync mode, cancel existing store updates\n\t\t// that have been scheduled, and invalidate the value so that it's freshly\n\t\t// computed. It might have been changed by the update we just cancelled.\n\t\tif ( lastIsAsync && ! isAsync ) {\n\t\t\tlastMapResultValid = false;\n\t\t\trenderQueue.cancel( queueContext );\n\t\t}\n\n\t\tupdateValue();\n\n\t\tlastIsAsync = isAsync;\n\n\t\t// Return a pair of functions that can be passed to `useSyncExternalStore`.\n\t\treturn { subscribe: subscriber.subscribe, getValue };\n\t};\n}\n\nfunction useStaticSelect( storeName ) {\n\treturn useRegistry().select( storeName );\n}\n\nfunction useMappingSelect( suspense, mapSelect, deps ) {\n\tconst registry = useRegistry();\n\tconst isAsync = useAsyncMode();\n\tconst store = useMemo(\n\t\t() => Store( registry, suspense ),\n\t\t[ registry, suspense ]\n\t);\n\n\t// These are \"pass-through\" dependencies from the parent hook,\n\t// and the parent should catch any hook rule violations.\n\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\tconst selector = useCallback( mapSelect, deps );\n\tconst { subscribe, getValue } = store( selector, isAsync );\n\tconst result = useSyncExternalStore( subscribe, getValue, getValue );\n\tuseDebugValue( result );\n\treturn result;\n}\n\n/**\n * Custom react hook for retrieving props from registered selectors.\n *\n * In general, this custom React hook follows the\n * [rules of hooks](https://reactjs.org/docs/hooks-rules.html).\n *\n * @template {MapSelect | StoreDescriptor<any>} T\n * @param {T} mapSelect Function called on every state change. The returned value is\n * exposed to the component implementing this hook. The function\n * receives the `registry.select` method on the first argument\n * and the `registry` on the second argument.\n * When a store key is passed, all selectors for the store will be\n * returned. This is only meant for usage of these selectors in event\n * callbacks, not for data needed to create the element tree.\n * @param {unknown[]} deps If provided, this memoizes the mapSelect so the same `mapSelect` is\n * invoked on every state change unless the dependencies change.\n *\n * @example\n * ```js\n * import { useSelect } from '@wordpress/data';\n * import { store as myCustomStore } from 'my-custom-store';\n *\n * function HammerPriceDisplay( { currency } ) {\n * const price = useSelect( ( select ) => {\n * return select( myCustomStore ).getPrice( 'hammer', currency );\n * }, [ currency ] );\n * return new Intl.NumberFormat( 'en-US', {\n * style: 'currency',\n * currency,\n * } ).format( price );\n * }\n *\n * // Rendered in the application:\n * // <HammerPriceDisplay currency=\"USD\" />\n * ```\n *\n * In the above example, when `HammerPriceDisplay` is rendered into an\n * application, the price will be retrieved from the store state using the\n * `mapSelect` callback on `useSelect`. If the currency prop changes then\n * any price in the state for that currency is retrieved. If the currency prop\n * doesn't change and other props are passed in that do change, the price will\n * not change because the dependency is just the currency.\n *\n * When data is only used in an event callback, the data should not be retrieved\n * on render, so it may be useful to get the selectors function instead.\n *\n * **Don't use `useSelect` this way when calling the selectors in the render\n * function because your component won't re-render on a data change.**\n *\n * ```js\n * import { useSelect } from '@wordpress/data';\n * import { store as myCustomStore } from 'my-custom-store';\n *\n * function Paste( { children } ) {\n * const { getSettings } = useSelect( myCustomStore );\n * function onPaste() {\n * // Do something with the settings.\n * const settings = getSettings();\n * }\n * return <div onPaste={ onPaste }>{ children }</div>;\n * }\n * ```\n * @return {UseSelectReturn<T>} A custom react hook.\n */\nexport default function useSelect( mapSelect, deps ) {\n\t// On initial call, on mount, determine the mode of this `useSelect` call\n\t// and then never allow it to change on subsequent updates.\n\tconst staticSelectMode = typeof mapSelect !== 'function';\n\tconst staticSelectModeRef = useRef( staticSelectMode );\n\n\tif ( staticSelectMode !== staticSelectModeRef.current ) {\n\t\tconst prevMode = staticSelectModeRef.current ? 'static' : 'mapping';\n\t\tconst nextMode = staticSelectMode ? 'static' : 'mapping';\n\t\tthrow new Error(\n\t\t\t`Switching useSelect from ${ prevMode } to ${ nextMode } is not allowed`\n\t\t);\n\t}\n\n\t/* eslint-disable react-hooks/rules-of-hooks */\n\t// `staticSelectMode` is not allowed to change during the hook instance's,\n\t// lifetime, so the rules of hooks are not really violated.\n\treturn staticSelectMode\n\t\t? useStaticSelect( mapSelect )\n\t\t: useMappingSelect( false, mapSelect, deps );\n\t/* eslint-enable react-hooks/rules-of-hooks */\n}\n\n/**\n * A variant of the `useSelect` hook that has the same API, but will throw a\n * suspense Promise if any of the called selectors is in an unresolved state.\n *\n * @param {Function} mapSelect Function called on every state change. The\n * returned value is exposed to the component\n * using this hook. The function receives the\n * `registry.suspendSelect` method as the first\n * argument and the `registry` as the second one.\n * @param {Array} deps A dependency array used to memoize the `mapSelect`\n * so that the same `mapSelect` is invoked on every\n * state change unless the dependencies change.\n *\n * @return {Object} Data object returned by the `mapSelect` function.\n */\nexport function useSuspenseSelect( mapSelect, deps ) {\n\treturn useMappingSelect( true, mapSelect, deps );\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/use-select/index.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/use-select/index.js"],"names":[],"mappings":"AAyOA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AACH,8IAlDW,OAAO,EAAE,4CAuEnB;AAED;;;;;;;;;;;;;;GAcG;AACH,qEAFY,MAAM,CAIjB;yEA3TY,OAAO,aAAa,EAAE,eAAe,CAAC,CAAC,CAAC;sHAIxC,OAAO,aAAa,EAAE,gBAAgB,CAAC,KAAK,EAAC,OAAO,EAAC,SAAS,CAAC;wBAK9D,OAAO,aAAa,EAAE,SAAS;sHAEhC,OAAO,aAAa,EAAE,eAAe,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wordpress/data",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.18.1-next.79a6196f.0",
|
|
4
4
|
"description": "Data module for WordPress.",
|
|
5
5
|
"author": "The WordPress Contributors",
|
|
6
6
|
"license": "GPL-2.0-or-later",
|
|
@@ -29,13 +29,13 @@
|
|
|
29
29
|
"sideEffects": false,
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@babel/runtime": "^7.16.0",
|
|
32
|
-
"@wordpress/compose": "^6.
|
|
33
|
-
"@wordpress/deprecated": "^3.
|
|
34
|
-
"@wordpress/element": "^5.
|
|
35
|
-
"@wordpress/is-shallow-equal": "^4.
|
|
36
|
-
"@wordpress/priority-queue": "^2.
|
|
37
|
-
"@wordpress/private-apis": "^0.
|
|
38
|
-
"@wordpress/redux-routine": "^4.
|
|
32
|
+
"@wordpress/compose": "^6.25.1-next.79a6196f.0",
|
|
33
|
+
"@wordpress/deprecated": "^3.48.1-next.79a6196f.0",
|
|
34
|
+
"@wordpress/element": "^5.25.1-next.79a6196f.0",
|
|
35
|
+
"@wordpress/is-shallow-equal": "^4.48.1-next.79a6196f.0",
|
|
36
|
+
"@wordpress/priority-queue": "^2.48.1-next.79a6196f.0",
|
|
37
|
+
"@wordpress/private-apis": "^0.30.1-next.79a6196f.0",
|
|
38
|
+
"@wordpress/redux-routine": "^4.48.1-next.79a6196f.0",
|
|
39
39
|
"deepmerge": "^4.3.0",
|
|
40
40
|
"equivalent-key-map": "^0.2.2",
|
|
41
41
|
"is-plain-object": "^5.0.0",
|
|
@@ -50,5 +50,5 @@
|
|
|
50
50
|
"publishConfig": {
|
|
51
51
|
"access": "public"
|
|
52
52
|
},
|
|
53
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "1e74b942ac0119a22ceaaf5c9594263f3ec516ab"
|
|
54
54
|
}
|
|
@@ -44,6 +44,14 @@ function Store( registry, suspense ) {
|
|
|
44
44
|
let lastIsAsync;
|
|
45
45
|
let subscriber;
|
|
46
46
|
let didWarnUnstableReference;
|
|
47
|
+
const storeStatesOnMount = new Map();
|
|
48
|
+
|
|
49
|
+
function getStoreState( name ) {
|
|
50
|
+
// If there's no store property (custom generic store), return an empty
|
|
51
|
+
// object. When comparing the state, the empty objects will cause the
|
|
52
|
+
// equality check to fail, setting `lastMapResultValid` to false.
|
|
53
|
+
return registry.stores[ name ]?.store?.getState?.() ?? {};
|
|
54
|
+
}
|
|
47
55
|
|
|
48
56
|
const createSubscriber = ( stores ) => {
|
|
49
57
|
// The set of stores the `subscribe` function is supposed to subscribe to. Here it is
|
|
@@ -56,12 +64,24 @@ function Store( registry, suspense ) {
|
|
|
56
64
|
const activeSubscriptions = new Set();
|
|
57
65
|
|
|
58
66
|
function subscribe( listener ) {
|
|
59
|
-
//
|
|
60
|
-
// call `getValue` after subscribing, to detect store
|
|
61
|
-
// in the interval between the `getValue` call
|
|
62
|
-
// the subscription, which is slightly
|
|
63
|
-
// second `getValue` call will
|
|
64
|
-
|
|
67
|
+
// Maybe invalidate the value right after subscription was created.
|
|
68
|
+
// React will call `getValue` after subscribing, to detect store
|
|
69
|
+
// updates that happened in the interval between the `getValue` call
|
|
70
|
+
// during render and creating the subscription, which is slightly
|
|
71
|
+
// delayed. We need to ensure that this second `getValue` call will
|
|
72
|
+
// compute a fresh value only if any of the store states have
|
|
73
|
+
// changed in the meantime.
|
|
74
|
+
if ( lastMapResultValid ) {
|
|
75
|
+
for ( const name of activeStores ) {
|
|
76
|
+
if (
|
|
77
|
+
storeStatesOnMount.get( name ) !== getStoreState( name )
|
|
78
|
+
) {
|
|
79
|
+
lastMapResultValid = false;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
storeStatesOnMount.clear();
|
|
65
85
|
|
|
66
86
|
const onStoreChange = () => {
|
|
67
87
|
// Invalidate the value on store update, so that a fresh value is computed.
|
|
@@ -149,6 +169,9 @@ function Store( registry, suspense ) {
|
|
|
149
169
|
}
|
|
150
170
|
|
|
151
171
|
if ( ! subscriber ) {
|
|
172
|
+
for ( const name of listeningStores.current ) {
|
|
173
|
+
storeStatesOnMount.set( name, getStoreState( name ) );
|
|
174
|
+
}
|
|
152
175
|
subscriber = createSubscriber( listeningStores.current );
|
|
153
176
|
} else {
|
|
154
177
|
subscriber.updateStores( listeningStores.current );
|
|
@@ -61,10 +61,7 @@ describe( 'useSelect', () => {
|
|
|
61
61
|
</RegistryProvider>
|
|
62
62
|
);
|
|
63
63
|
|
|
64
|
-
|
|
65
|
-
// - 1 for initial mount
|
|
66
|
-
// - 1 for the subscription effect checking if value has changed
|
|
67
|
-
expect( selectSpy ).toHaveBeenCalledTimes( 2 );
|
|
64
|
+
expect( selectSpy ).toHaveBeenCalledTimes( 1 );
|
|
68
65
|
expect( TestComponent ).toHaveBeenCalledTimes( 1 );
|
|
69
66
|
|
|
70
67
|
// Ensure expected state was rendered.
|
|
@@ -93,7 +90,7 @@ describe( 'useSelect', () => {
|
|
|
93
90
|
</RegistryProvider>
|
|
94
91
|
);
|
|
95
92
|
|
|
96
|
-
expect( selectSpyFoo ).toHaveBeenCalledTimes(
|
|
93
|
+
expect( selectSpyFoo ).toHaveBeenCalledTimes( 1 );
|
|
97
94
|
expect( selectSpyBar ).toHaveBeenCalledTimes( 0 );
|
|
98
95
|
expect( TestComponent ).toHaveBeenCalledTimes( 1 );
|
|
99
96
|
|
|
@@ -107,7 +104,7 @@ describe( 'useSelect', () => {
|
|
|
107
104
|
</RegistryProvider>
|
|
108
105
|
);
|
|
109
106
|
|
|
110
|
-
expect( selectSpyFoo ).toHaveBeenCalledTimes(
|
|
107
|
+
expect( selectSpyFoo ).toHaveBeenCalledTimes( 1 );
|
|
111
108
|
expect( selectSpyBar ).toHaveBeenCalledTimes( 0 );
|
|
112
109
|
expect( TestComponent ).toHaveBeenCalledTimes( 2 );
|
|
113
110
|
|
|
@@ -121,7 +118,7 @@ describe( 'useSelect', () => {
|
|
|
121
118
|
</RegistryProvider>
|
|
122
119
|
);
|
|
123
120
|
|
|
124
|
-
expect( selectSpyFoo ).toHaveBeenCalledTimes(
|
|
121
|
+
expect( selectSpyFoo ).toHaveBeenCalledTimes( 1 );
|
|
125
122
|
expect( selectSpyBar ).toHaveBeenCalledTimes( 1 );
|
|
126
123
|
expect( TestComponent ).toHaveBeenCalledTimes( 3 );
|
|
127
124
|
|
|
@@ -163,7 +160,7 @@ describe( 'useSelect', () => {
|
|
|
163
160
|
|
|
164
161
|
// Initial render renders only parent and subscribes the parent to store.
|
|
165
162
|
expect( screen.getByText( 'none' ) ).toBeInTheDocument();
|
|
166
|
-
expect( mapSelectParent ).toHaveBeenCalledTimes(
|
|
163
|
+
expect( mapSelectParent ).toHaveBeenCalledTimes( 1 );
|
|
167
164
|
expect( mapSelectChild ).toHaveBeenCalledTimes( 0 );
|
|
168
165
|
expect( Parent ).toHaveBeenCalledTimes( 1 );
|
|
169
166
|
expect( Child ).toHaveBeenCalledTimes( 0 );
|
|
@@ -174,8 +171,8 @@ describe( 'useSelect', () => {
|
|
|
174
171
|
|
|
175
172
|
// Child was rendered and subscribed to the store, as the _second_ subscription.
|
|
176
173
|
expect( screen.getByText( 'yes' ) ).toBeInTheDocument();
|
|
177
|
-
expect( mapSelectParent ).toHaveBeenCalledTimes(
|
|
178
|
-
expect( mapSelectChild ).toHaveBeenCalledTimes(
|
|
174
|
+
expect( mapSelectParent ).toHaveBeenCalledTimes( 2 );
|
|
175
|
+
expect( mapSelectChild ).toHaveBeenCalledTimes( 1 );
|
|
179
176
|
expect( Parent ).toHaveBeenCalledTimes( 2 );
|
|
180
177
|
expect( Child ).toHaveBeenCalledTimes( 1 );
|
|
181
178
|
|
|
@@ -187,8 +184,8 @@ describe( 'useSelect', () => {
|
|
|
187
184
|
// I.e., `mapSelectChild` was called again, and state update was scheduled, we cannot
|
|
188
185
|
// avoid that, but the state update is never executed and doesn't do a rerender.
|
|
189
186
|
expect( screen.getByText( 'none' ) ).toBeInTheDocument();
|
|
190
|
-
expect( mapSelectParent ).toHaveBeenCalledTimes(
|
|
191
|
-
expect( mapSelectChild ).toHaveBeenCalledTimes(
|
|
187
|
+
expect( mapSelectParent ).toHaveBeenCalledTimes( 3 );
|
|
188
|
+
expect( mapSelectChild ).toHaveBeenCalledTimes( 2 );
|
|
192
189
|
expect( Parent ).toHaveBeenCalledTimes( 3 );
|
|
193
190
|
expect( Child ).toHaveBeenCalledTimes( 1 );
|
|
194
191
|
} );
|
|
@@ -217,7 +214,7 @@ describe( 'useSelect', () => {
|
|
|
217
214
|
</RegistryProvider>
|
|
218
215
|
);
|
|
219
216
|
|
|
220
|
-
expect( mapSelect ).toHaveBeenCalledTimes(
|
|
217
|
+
expect( mapSelect ).toHaveBeenCalledTimes( 1 );
|
|
221
218
|
expect( TestComponent ).toHaveBeenCalledTimes( 1 );
|
|
222
219
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent( '0:0' );
|
|
223
220
|
|
|
@@ -226,7 +223,7 @@ describe( 'useSelect', () => {
|
|
|
226
223
|
registry.dispatch( 'store-even' ).inc();
|
|
227
224
|
} );
|
|
228
225
|
|
|
229
|
-
expect( mapSelect ).toHaveBeenCalledTimes(
|
|
226
|
+
expect( mapSelect ).toHaveBeenCalledTimes( 2 );
|
|
230
227
|
expect( TestComponent ).toHaveBeenCalledTimes( 2 );
|
|
231
228
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent( '0:2' );
|
|
232
229
|
|
|
@@ -235,7 +232,7 @@ describe( 'useSelect', () => {
|
|
|
235
232
|
registry.dispatch( 'store-odd' ).inc();
|
|
236
233
|
} );
|
|
237
234
|
|
|
238
|
-
expect( mapSelect ).toHaveBeenCalledTimes(
|
|
235
|
+
expect( mapSelect ).toHaveBeenCalledTimes( 2 );
|
|
239
236
|
expect( TestComponent ).toHaveBeenCalledTimes( 2 );
|
|
240
237
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent( '0:2' );
|
|
241
238
|
|
|
@@ -244,7 +241,7 @@ describe( 'useSelect', () => {
|
|
|
244
241
|
registry.dispatch( 'store-main' ).inc();
|
|
245
242
|
} );
|
|
246
243
|
|
|
247
|
-
expect( mapSelect ).toHaveBeenCalledTimes(
|
|
244
|
+
expect( mapSelect ).toHaveBeenCalledTimes( 3 );
|
|
248
245
|
expect( TestComponent ).toHaveBeenCalledTimes( 3 );
|
|
249
246
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent( '1:3' );
|
|
250
247
|
|
|
@@ -253,7 +250,7 @@ describe( 'useSelect', () => {
|
|
|
253
250
|
registry.dispatch( 'store-odd' ).inc();
|
|
254
251
|
} );
|
|
255
252
|
|
|
256
|
-
expect( mapSelect ).toHaveBeenCalledTimes(
|
|
253
|
+
expect( mapSelect ).toHaveBeenCalledTimes( 4 );
|
|
257
254
|
expect( TestComponent ).toHaveBeenCalledTimes( 4 );
|
|
258
255
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent( '1:5' );
|
|
259
256
|
|
|
@@ -263,7 +260,7 @@ describe( 'useSelect', () => {
|
|
|
263
260
|
registry.dispatch( 'store-even' ).inc();
|
|
264
261
|
} );
|
|
265
262
|
|
|
266
|
-
expect( mapSelect ).toHaveBeenCalledTimes(
|
|
263
|
+
expect( mapSelect ).toHaveBeenCalledTimes( 5 );
|
|
267
264
|
expect( TestComponent ).toHaveBeenCalledTimes( 4 );
|
|
268
265
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent( '1:5' );
|
|
269
266
|
} );
|
|
@@ -336,7 +333,7 @@ describe( 'useSelect', () => {
|
|
|
336
333
|
expect( screen.getByRole( 'status' ).dataset.d ).toBe(
|
|
337
334
|
JSON.stringify( valueB )
|
|
338
335
|
);
|
|
339
|
-
expect( mapSelectSpy ).toHaveBeenCalledTimes(
|
|
336
|
+
expect( mapSelectSpy ).toHaveBeenCalledTimes( 2 );
|
|
340
337
|
}
|
|
341
338
|
);
|
|
342
339
|
} );
|
|
@@ -368,8 +365,8 @@ describe( 'useSelect', () => {
|
|
|
368
365
|
</RegistryProvider>
|
|
369
366
|
);
|
|
370
367
|
|
|
371
|
-
expect( selectCount1 ).toHaveBeenCalledTimes(
|
|
372
|
-
expect( selectCount2 ).toHaveBeenCalledTimes(
|
|
368
|
+
expect( selectCount1 ).toHaveBeenCalledTimes( 1 );
|
|
369
|
+
expect( selectCount2 ).toHaveBeenCalledTimes( 1 );
|
|
373
370
|
expect( TestComponent ).toHaveBeenCalledTimes( 1 );
|
|
374
371
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent( '0' );
|
|
375
372
|
|
|
@@ -377,8 +374,8 @@ describe( 'useSelect', () => {
|
|
|
377
374
|
registry.dispatch( 'store-2' ).inc();
|
|
378
375
|
} );
|
|
379
376
|
|
|
380
|
-
expect( selectCount1 ).toHaveBeenCalledTimes(
|
|
381
|
-
expect( selectCount2 ).toHaveBeenCalledTimes(
|
|
377
|
+
expect( selectCount1 ).toHaveBeenCalledTimes( 1 );
|
|
378
|
+
expect( selectCount2 ).toHaveBeenCalledTimes( 2 );
|
|
382
379
|
expect( TestComponent ).toHaveBeenCalledTimes( 2 );
|
|
383
380
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent( '0' );
|
|
384
381
|
|
|
@@ -386,8 +383,8 @@ describe( 'useSelect', () => {
|
|
|
386
383
|
registry.dispatch( 'store-1' ).inc();
|
|
387
384
|
} );
|
|
388
385
|
|
|
389
|
-
expect( selectCount1 ).toHaveBeenCalledTimes(
|
|
390
|
-
expect( selectCount2 ).toHaveBeenCalledTimes(
|
|
386
|
+
expect( selectCount1 ).toHaveBeenCalledTimes( 2 );
|
|
387
|
+
expect( selectCount2 ).toHaveBeenCalledTimes( 2 );
|
|
391
388
|
expect( TestComponent ).toHaveBeenCalledTimes( 3 );
|
|
392
389
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent( '1' );
|
|
393
390
|
|
|
@@ -425,21 +422,21 @@ describe( 'useSelect', () => {
|
|
|
425
422
|
</RegistryProvider>
|
|
426
423
|
);
|
|
427
424
|
|
|
428
|
-
expect( selectCount1And2 ).toHaveBeenCalledTimes(
|
|
425
|
+
expect( selectCount1And2 ).toHaveBeenCalledTimes( 1 );
|
|
429
426
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent( '0,0' );
|
|
430
427
|
|
|
431
428
|
act( () => {
|
|
432
429
|
registry.dispatch( 'store-2' ).inc();
|
|
433
430
|
} );
|
|
434
431
|
|
|
435
|
-
expect( selectCount1And2 ).toHaveBeenCalledTimes(
|
|
432
|
+
expect( selectCount1And2 ).toHaveBeenCalledTimes( 2 );
|
|
436
433
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent( '0,1' );
|
|
437
434
|
|
|
438
435
|
act( () => {
|
|
439
436
|
registry.dispatch( 'store-3' ).inc();
|
|
440
437
|
} );
|
|
441
438
|
|
|
442
|
-
expect( selectCount1And2 ).toHaveBeenCalledTimes(
|
|
439
|
+
expect( selectCount1And2 ).toHaveBeenCalledTimes( 2 );
|
|
443
440
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent( '0,1' );
|
|
444
441
|
} );
|
|
445
442
|
|
|
@@ -475,7 +472,7 @@ describe( 'useSelect', () => {
|
|
|
475
472
|
</RegistryProvider>
|
|
476
473
|
);
|
|
477
474
|
|
|
478
|
-
expect( selectCount1AndDep ).toHaveBeenCalledTimes(
|
|
475
|
+
expect( selectCount1AndDep ).toHaveBeenCalledTimes( 1 );
|
|
479
476
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent(
|
|
480
477
|
'count:0,dep:0'
|
|
481
478
|
);
|
|
@@ -484,7 +481,7 @@ describe( 'useSelect', () => {
|
|
|
484
481
|
setDep( 1 );
|
|
485
482
|
} );
|
|
486
483
|
|
|
487
|
-
expect( selectCount1AndDep ).toHaveBeenCalledTimes(
|
|
484
|
+
expect( selectCount1AndDep ).toHaveBeenCalledTimes( 2 );
|
|
488
485
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent(
|
|
489
486
|
'count:0,dep:1'
|
|
490
487
|
);
|
|
@@ -493,7 +490,7 @@ describe( 'useSelect', () => {
|
|
|
493
490
|
registry.dispatch( 'store-1' ).inc();
|
|
494
491
|
} );
|
|
495
492
|
|
|
496
|
-
expect( selectCount1AndDep ).toHaveBeenCalledTimes(
|
|
493
|
+
expect( selectCount1AndDep ).toHaveBeenCalledTimes( 3 );
|
|
497
494
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent(
|
|
498
495
|
'count:1,dep:1'
|
|
499
496
|
);
|
|
@@ -525,8 +522,8 @@ describe( 'useSelect', () => {
|
|
|
525
522
|
</RegistryProvider>
|
|
526
523
|
);
|
|
527
524
|
|
|
528
|
-
// One select on initial render
|
|
529
|
-
// There's a
|
|
525
|
+
// One select on initial render.
|
|
526
|
+
// There's a second selector call on the second render, but that one returns a memoized value.
|
|
530
527
|
expect( selectCount1 ).toHaveBeenCalledTimes( 2 );
|
|
531
528
|
|
|
532
529
|
// Initial render and second render after counter increment (which is expected to be detected).
|
|
@@ -636,7 +633,7 @@ describe( 'useSelect', () => {
|
|
|
636
633
|
</RegistryProvider>
|
|
637
634
|
);
|
|
638
635
|
|
|
639
|
-
expect( selectCount1And2 ).toHaveBeenCalledTimes(
|
|
636
|
+
expect( selectCount1And2 ).toHaveBeenCalledTimes( 1 );
|
|
640
637
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent(
|
|
641
638
|
'count1:0,count2:0'
|
|
642
639
|
);
|
|
@@ -645,7 +642,7 @@ describe( 'useSelect', () => {
|
|
|
645
642
|
registry.dispatch( 'store-2' ).inc();
|
|
646
643
|
} );
|
|
647
644
|
|
|
648
|
-
expect( selectCount1And2 ).toHaveBeenCalledTimes(
|
|
645
|
+
expect( selectCount1And2 ).toHaveBeenCalledTimes( 2 );
|
|
649
646
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent(
|
|
650
647
|
'count1:0,count2:1'
|
|
651
648
|
);
|
|
@@ -691,7 +688,7 @@ describe( 'useSelect', () => {
|
|
|
691
688
|
);
|
|
692
689
|
|
|
693
690
|
expect( selectCount1 ).toHaveBeenCalledTimes( 0 );
|
|
694
|
-
expect( selectCount2 ).toHaveBeenCalledTimes(
|
|
691
|
+
expect( selectCount2 ).toHaveBeenCalledTimes( 1 );
|
|
695
692
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent(
|
|
696
693
|
'count2:0'
|
|
697
694
|
);
|
|
@@ -699,7 +696,7 @@ describe( 'useSelect', () => {
|
|
|
699
696
|
act( () => screen.getByText( 'Toggle' ).click() );
|
|
700
697
|
|
|
701
698
|
expect( selectCount1 ).toHaveBeenCalledTimes( 1 );
|
|
702
|
-
expect( selectCount2 ).toHaveBeenCalledTimes(
|
|
699
|
+
expect( selectCount2 ).toHaveBeenCalledTimes( 1 );
|
|
703
700
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent(
|
|
704
701
|
'count1:0'
|
|
705
702
|
);
|
|
@@ -710,7 +707,7 @@ describe( 'useSelect', () => {
|
|
|
710
707
|
} );
|
|
711
708
|
|
|
712
709
|
expect( selectCount1 ).toHaveBeenCalledTimes( 2 );
|
|
713
|
-
expect( selectCount2 ).toHaveBeenCalledTimes(
|
|
710
|
+
expect( selectCount2 ).toHaveBeenCalledTimes( 1 );
|
|
714
711
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent(
|
|
715
712
|
'count1:1'
|
|
716
713
|
);
|
|
@@ -967,8 +964,8 @@ describe( 'useSelect', () => {
|
|
|
967
964
|
</AsyncModeProvider>
|
|
968
965
|
);
|
|
969
966
|
|
|
970
|
-
// initial render
|
|
971
|
-
expect( selectSpy ).toHaveBeenCalledTimes(
|
|
967
|
+
// initial render
|
|
968
|
+
expect( selectSpy ).toHaveBeenCalledTimes( 1 );
|
|
972
969
|
expect( TestComponent ).toHaveBeenCalledTimes( 1 );
|
|
973
970
|
|
|
974
971
|
// Ensure expected state was rendered.
|
|
@@ -979,12 +976,12 @@ describe( 'useSelect', () => {
|
|
|
979
976
|
} );
|
|
980
977
|
|
|
981
978
|
// still not called right after increment
|
|
982
|
-
expect( selectSpy ).toHaveBeenCalledTimes(
|
|
979
|
+
expect( selectSpy ).toHaveBeenCalledTimes( 1 );
|
|
983
980
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent( '0' );
|
|
984
981
|
|
|
985
982
|
expect( await screen.findByText( 1 ) ).toBeInTheDocument();
|
|
986
983
|
|
|
987
|
-
expect( selectSpy ).toHaveBeenCalledTimes(
|
|
984
|
+
expect( selectSpy ).toHaveBeenCalledTimes( 2 );
|
|
988
985
|
expect( TestComponent ).toHaveBeenCalledTimes( 2 );
|
|
989
986
|
} );
|
|
990
987
|
|
|
@@ -1026,9 +1023,8 @@ describe( 'useSelect', () => {
|
|
|
1026
1023
|
// Ensure the async update was flushed during the rerender.
|
|
1027
1024
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent( '1' );
|
|
1028
1025
|
|
|
1029
|
-
// initial render + subscription check + rerender with isAsync=false
|
|
1030
|
-
expect( selectSpy ).toHaveBeenCalledTimes( 3 );
|
|
1031
1026
|
// initial render + rerender with isAsync=false
|
|
1027
|
+
expect( selectSpy ).toHaveBeenCalledTimes( 2 );
|
|
1032
1028
|
expect( TestComponent ).toHaveBeenCalledTimes( 2 );
|
|
1033
1029
|
} );
|
|
1034
1030
|
|
|
@@ -1077,7 +1073,7 @@ describe( 'useSelect', () => {
|
|
|
1077
1073
|
// Give the async update time to run in case it wasn't cancelled
|
|
1078
1074
|
await new Promise( setImmediate );
|
|
1079
1075
|
|
|
1080
|
-
expect( selectA ).toHaveBeenCalledTimes(
|
|
1076
|
+
expect( selectA ).toHaveBeenCalledTimes( 1 );
|
|
1081
1077
|
expect( selectB ).toHaveBeenCalledTimes( 2 );
|
|
1082
1078
|
expect( TestComponent ).toHaveBeenCalledTimes( 2 );
|
|
1083
1079
|
} );
|
|
@@ -1120,7 +1116,7 @@ describe( 'useSelect', () => {
|
|
|
1120
1116
|
await new Promise( setImmediate );
|
|
1121
1117
|
|
|
1122
1118
|
// only the initial render, no state updates
|
|
1123
|
-
expect( selectSpy ).toHaveBeenCalledTimes(
|
|
1119
|
+
expect( selectSpy ).toHaveBeenCalledTimes( 1 );
|
|
1124
1120
|
expect( TestComponent ).toHaveBeenCalledTimes( 1 );
|
|
1125
1121
|
} );
|
|
1126
1122
|
|
|
@@ -1163,7 +1159,7 @@ describe( 'useSelect', () => {
|
|
|
1163
1159
|
await new Promise( setImmediate );
|
|
1164
1160
|
|
|
1165
1161
|
// initial render + registry change rerender, no state updates
|
|
1166
|
-
expect( selectSpy ).toHaveBeenCalledTimes(
|
|
1162
|
+
expect( selectSpy ).toHaveBeenCalledTimes( 2 );
|
|
1167
1163
|
expect( TestComponent ).toHaveBeenCalledTimes( 2 );
|
|
1168
1164
|
} );
|
|
1169
1165
|
} );
|
|
@@ -52,10 +52,7 @@ describe( 'withSelect', () => {
|
|
|
52
52
|
</RegistryProvider>
|
|
53
53
|
);
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
// - Once on initial render.
|
|
57
|
-
// - Once on effect before subscription set.
|
|
58
|
-
expect( mapSelectToProps ).toHaveBeenCalledTimes( 2 );
|
|
55
|
+
expect( mapSelectToProps ).toHaveBeenCalledTimes( 1 );
|
|
59
56
|
expect( OriginalComponent ).toHaveBeenCalledTimes( 1 );
|
|
60
57
|
|
|
61
58
|
// Wrapper is the enhanced component.
|
|
@@ -107,10 +104,7 @@ describe( 'withSelect', () => {
|
|
|
107
104
|
);
|
|
108
105
|
|
|
109
106
|
expect( OriginalComponent ).toHaveBeenCalledTimes( 1 );
|
|
110
|
-
|
|
111
|
-
// - 1 on initial render
|
|
112
|
-
// - 1 on effect before subscription set.
|
|
113
|
-
expect( mapSelectToProps ).toHaveBeenCalledTimes( 2 );
|
|
107
|
+
expect( mapSelectToProps ).toHaveBeenCalledTimes( 1 );
|
|
114
108
|
expect( mapDispatchToProps ).toHaveBeenCalledTimes( 1 );
|
|
115
109
|
|
|
116
110
|
// Simulate a click on the button.
|
|
@@ -119,16 +113,14 @@ describe( 'withSelect', () => {
|
|
|
119
113
|
await user.click( button );
|
|
120
114
|
|
|
121
115
|
expect( button ).toHaveTextContent( '1' );
|
|
122
|
-
//
|
|
123
|
-
// 1. Initial mount
|
|
116
|
+
// 1. Initial mount
|
|
124
117
|
// 2. When click handler is called.
|
|
125
118
|
expect( mapDispatchToProps ).toHaveBeenCalledTimes( 2 );
|
|
126
|
-
//
|
|
119
|
+
// 3 times
|
|
127
120
|
// - 1 on initial render
|
|
128
|
-
// - 1 on effect before subscription set.
|
|
129
121
|
// - 1 on click triggering subscription firing.
|
|
130
122
|
// - 1 on rerender.
|
|
131
|
-
expect( mapSelectToProps ).toHaveBeenCalledTimes(
|
|
123
|
+
expect( mapSelectToProps ).toHaveBeenCalledTimes( 3 );
|
|
132
124
|
// Verifies component only renders twice.
|
|
133
125
|
expect( OriginalComponent ).toHaveBeenCalledTimes( 2 );
|
|
134
126
|
} );
|
|
@@ -253,10 +245,7 @@ describe( 'withSelect', () => {
|
|
|
253
245
|
</RegistryProvider>
|
|
254
246
|
);
|
|
255
247
|
|
|
256
|
-
|
|
257
|
-
// - 1 on initial render
|
|
258
|
-
// - 1 on effect before subscription set.
|
|
259
|
-
expect( mapSelectToProps ).toHaveBeenCalledTimes( 2 );
|
|
248
|
+
expect( mapSelectToProps ).toHaveBeenCalledTimes( 1 );
|
|
260
249
|
expect( OriginalComponent ).toHaveBeenCalledTimes( 1 );
|
|
261
250
|
|
|
262
251
|
rerender(
|
|
@@ -266,7 +255,7 @@ describe( 'withSelect', () => {
|
|
|
266
255
|
);
|
|
267
256
|
|
|
268
257
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent( '10' );
|
|
269
|
-
expect( mapSelectToProps ).toHaveBeenCalledTimes(
|
|
258
|
+
expect( mapSelectToProps ).toHaveBeenCalledTimes( 2 );
|
|
270
259
|
expect( OriginalComponent ).toHaveBeenCalledTimes( 2 );
|
|
271
260
|
} );
|
|
272
261
|
|
|
@@ -296,10 +285,7 @@ describe( 'withSelect', () => {
|
|
|
296
285
|
</RegistryProvider>
|
|
297
286
|
);
|
|
298
287
|
|
|
299
|
-
|
|
300
|
-
// - 1 on initial render
|
|
301
|
-
// - 1 on effect before subscription set.
|
|
302
|
-
expect( mapSelectToProps ).toHaveBeenCalledTimes( 2 );
|
|
288
|
+
expect( mapSelectToProps ).toHaveBeenCalledTimes( 1 );
|
|
303
289
|
expect( OriginalComponent ).toHaveBeenCalledTimes( 1 );
|
|
304
290
|
|
|
305
291
|
rerender(
|
|
@@ -308,7 +294,7 @@ describe( 'withSelect', () => {
|
|
|
308
294
|
</RegistryProvider>
|
|
309
295
|
);
|
|
310
296
|
|
|
311
|
-
expect( mapSelectToProps ).toHaveBeenCalledTimes(
|
|
297
|
+
expect( mapSelectToProps ).toHaveBeenCalledTimes( 1 );
|
|
312
298
|
expect( OriginalComponent ).toHaveBeenCalledTimes( 1 );
|
|
313
299
|
} );
|
|
314
300
|
|
|
@@ -339,15 +325,12 @@ describe( 'withSelect', () => {
|
|
|
339
325
|
</RegistryProvider>
|
|
340
326
|
);
|
|
341
327
|
|
|
342
|
-
|
|
343
|
-
// - 1 on initial render
|
|
344
|
-
// - 1 on effect before subscription set.
|
|
345
|
-
expect( mapSelectToProps ).toHaveBeenCalledTimes( 2 );
|
|
328
|
+
expect( mapSelectToProps ).toHaveBeenCalledTimes( 1 );
|
|
346
329
|
expect( OriginalComponent ).toHaveBeenCalledTimes( 1 );
|
|
347
330
|
|
|
348
331
|
await act( async () => registry.dispatch( 'demo' ).update() );
|
|
349
332
|
|
|
350
|
-
expect( mapSelectToProps ).toHaveBeenCalledTimes(
|
|
333
|
+
expect( mapSelectToProps ).toHaveBeenCalledTimes( 2 );
|
|
351
334
|
expect( OriginalComponent ).toHaveBeenCalledTimes( 1 );
|
|
352
335
|
} );
|
|
353
336
|
|
|
@@ -373,10 +356,7 @@ describe( 'withSelect', () => {
|
|
|
373
356
|
</RegistryProvider>
|
|
374
357
|
);
|
|
375
358
|
|
|
376
|
-
|
|
377
|
-
// - 1 on initial render
|
|
378
|
-
// - 1 on effect before subscription set.
|
|
379
|
-
expect( mapSelectToProps ).toHaveBeenCalledTimes( 2 );
|
|
359
|
+
expect( mapSelectToProps ).toHaveBeenCalledTimes( 1 );
|
|
380
360
|
expect( OriginalComponent ).toHaveBeenCalledTimes( 1 );
|
|
381
361
|
|
|
382
362
|
rerender(
|
|
@@ -385,7 +365,7 @@ describe( 'withSelect', () => {
|
|
|
385
365
|
</RegistryProvider>
|
|
386
366
|
);
|
|
387
367
|
|
|
388
|
-
expect( mapSelectToProps ).toHaveBeenCalledTimes(
|
|
368
|
+
expect( mapSelectToProps ).toHaveBeenCalledTimes( 2 );
|
|
389
369
|
expect( OriginalComponent ).toHaveBeenCalledTimes( 2 );
|
|
390
370
|
} );
|
|
391
371
|
|
|
@@ -411,15 +391,12 @@ describe( 'withSelect', () => {
|
|
|
411
391
|
</RegistryProvider>
|
|
412
392
|
);
|
|
413
393
|
|
|
414
|
-
|
|
415
|
-
// - 1 on initial render
|
|
416
|
-
// - 1 on effect before subscription set.
|
|
417
|
-
expect( mapSelectToProps ).toHaveBeenCalledTimes( 2 );
|
|
394
|
+
expect( mapSelectToProps ).toHaveBeenCalledTimes( 1 );
|
|
418
395
|
expect( OriginalComponent ).toHaveBeenCalledTimes( 1 );
|
|
419
396
|
|
|
420
397
|
await act( async () => store.dispatch( { type: 'dummy' } ) );
|
|
421
398
|
|
|
422
|
-
expect( mapSelectToProps ).toHaveBeenCalledTimes(
|
|
399
|
+
expect( mapSelectToProps ).toHaveBeenCalledTimes( 1 );
|
|
423
400
|
expect( OriginalComponent ).toHaveBeenCalledTimes( 1 );
|
|
424
401
|
} );
|
|
425
402
|
|
|
@@ -451,10 +428,7 @@ describe( 'withSelect', () => {
|
|
|
451
428
|
</RegistryProvider>
|
|
452
429
|
);
|
|
453
430
|
|
|
454
|
-
|
|
455
|
-
// - 1 on initial render
|
|
456
|
-
// - 1 on effect before subscription set.
|
|
457
|
-
expect( mapSelectToProps ).toHaveBeenCalledTimes( 2 );
|
|
431
|
+
expect( mapSelectToProps ).toHaveBeenCalledTimes( 1 );
|
|
458
432
|
expect( OriginalComponent ).toHaveBeenCalledTimes( 1 );
|
|
459
433
|
|
|
460
434
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent(
|
|
@@ -470,7 +444,7 @@ describe( 'withSelect', () => {
|
|
|
470
444
|
</RegistryProvider>
|
|
471
445
|
);
|
|
472
446
|
|
|
473
|
-
expect( mapSelectToProps ).toHaveBeenCalledTimes(
|
|
447
|
+
expect( mapSelectToProps ).toHaveBeenCalledTimes( 2 );
|
|
474
448
|
expect( OriginalComponent ).toHaveBeenCalledTimes( 2 );
|
|
475
449
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent(
|
|
476
450
|
JSON.stringify( {
|
|
@@ -510,10 +484,7 @@ describe( 'withSelect', () => {
|
|
|
510
484
|
</RegistryProvider>
|
|
511
485
|
);
|
|
512
486
|
|
|
513
|
-
|
|
514
|
-
// - 1 on initial render
|
|
515
|
-
// - 1 on effect before subscription set.
|
|
516
|
-
expect( mapSelectToProps ).toHaveBeenCalledTimes( 2 );
|
|
487
|
+
expect( mapSelectToProps ).toHaveBeenCalledTimes( 1 );
|
|
517
488
|
expect( OriginalComponent ).toHaveBeenCalledTimes( 1 );
|
|
518
489
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent( 'Unknown' );
|
|
519
490
|
|
|
@@ -523,7 +494,7 @@ describe( 'withSelect', () => {
|
|
|
523
494
|
</RegistryProvider>
|
|
524
495
|
);
|
|
525
496
|
|
|
526
|
-
expect( mapSelectToProps ).toHaveBeenCalledTimes(
|
|
497
|
+
expect( mapSelectToProps ).toHaveBeenCalledTimes( 2 );
|
|
527
498
|
expect( OriginalComponent ).toHaveBeenCalledTimes( 2 );
|
|
528
499
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent( 'OK' );
|
|
529
500
|
|
|
@@ -533,7 +504,7 @@ describe( 'withSelect', () => {
|
|
|
533
504
|
</RegistryProvider>
|
|
534
505
|
);
|
|
535
506
|
|
|
536
|
-
expect( mapSelectToProps ).toHaveBeenCalledTimes(
|
|
507
|
+
expect( mapSelectToProps ).toHaveBeenCalledTimes( 3 );
|
|
537
508
|
expect( OriginalComponent ).toHaveBeenCalledTimes( 3 );
|
|
538
509
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent( 'Unknown' );
|
|
539
510
|
} );
|
|
@@ -574,11 +545,8 @@ describe( 'withSelect', () => {
|
|
|
574
545
|
</RegistryProvider>
|
|
575
546
|
);
|
|
576
547
|
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
// - 1 on effect before subscription set.
|
|
580
|
-
expect( childMapSelectToProps ).toHaveBeenCalledTimes( 2 );
|
|
581
|
-
expect( parentMapSelectToProps ).toHaveBeenCalledTimes( 2 );
|
|
548
|
+
expect( childMapSelectToProps ).toHaveBeenCalledTimes( 1 );
|
|
549
|
+
expect( parentMapSelectToProps ).toHaveBeenCalledTimes( 1 );
|
|
582
550
|
expect( ChildOriginalComponent ).toHaveBeenCalledTimes( 1 );
|
|
583
551
|
expect( ParentOriginalComponent ).toHaveBeenCalledTimes( 1 );
|
|
584
552
|
|
|
@@ -588,8 +556,8 @@ describe( 'withSelect', () => {
|
|
|
588
556
|
registry.dispatch( 'childRender' ).toggleRender();
|
|
589
557
|
} );
|
|
590
558
|
|
|
591
|
-
expect( childMapSelectToProps ).toHaveBeenCalledTimes(
|
|
592
|
-
expect( parentMapSelectToProps ).toHaveBeenCalledTimes(
|
|
559
|
+
expect( childMapSelectToProps ).toHaveBeenCalledTimes( 1 );
|
|
560
|
+
expect( parentMapSelectToProps ).toHaveBeenCalledTimes( 3 );
|
|
593
561
|
expect( ChildOriginalComponent ).toHaveBeenCalledTimes( 1 );
|
|
594
562
|
expect( ParentOriginalComponent ).toHaveBeenCalledTimes( 2 );
|
|
595
563
|
} );
|
|
@@ -620,10 +588,7 @@ describe( 'withSelect', () => {
|
|
|
620
588
|
</RegistryProvider>
|
|
621
589
|
);
|
|
622
590
|
|
|
623
|
-
|
|
624
|
-
// - 1 on initial render
|
|
625
|
-
// - 1 on effect before subscription set.
|
|
626
|
-
expect( mapSelectToProps ).toHaveBeenCalledTimes( 2 );
|
|
591
|
+
expect( mapSelectToProps ).toHaveBeenCalledTimes( 1 );
|
|
627
592
|
expect( OriginalComponent ).toHaveBeenCalledTimes( 1 );
|
|
628
593
|
|
|
629
594
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent( 'first' );
|
|
@@ -642,12 +607,10 @@ describe( 'withSelect', () => {
|
|
|
642
607
|
</RegistryProvider>
|
|
643
608
|
);
|
|
644
609
|
|
|
645
|
-
//
|
|
610
|
+
// 2 times:
|
|
646
611
|
// - 1 on initial render
|
|
647
|
-
// - 1 on effect before subscription set.
|
|
648
612
|
// - 1 on re-render
|
|
649
|
-
|
|
650
|
-
expect( mapSelectToProps ).toHaveBeenCalledTimes( 4 );
|
|
613
|
+
expect( mapSelectToProps ).toHaveBeenCalledTimes( 2 );
|
|
651
614
|
expect( OriginalComponent ).toHaveBeenCalledTimes( 2 );
|
|
652
615
|
expect( screen.getByRole( 'status' ) ).toHaveTextContent( 'second' );
|
|
653
616
|
} );
|
package/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/typescript/lib/lib.es2023.d.ts","../../node_modules/typescript/lib/lib.esnext.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","./src/factory.js","../../node_modules/redux/index.d.ts","./src/types.ts","./src/controls.js","../../node_modules/utility-types/dist/aliases-and-guards.d.ts","../../node_modules/utility-types/dist/mapped-types.d.ts","../../node_modules/utility-types/dist/utility-types.d.ts","../../node_modules/utility-types/dist/functional-helpers.d.ts","../../node_modules/utility-types/dist/index.d.ts","../deprecated/build-types/index.d.ts","../redux-routine/build-types/index.d.ts","../../node_modules/@types/react/global.d.ts","../../node_modules/csstype/index.d.ts","../../node_modules/@types/prop-types/index.d.ts","../../node_modules/@types/scheduler/tracing.d.ts","../../node_modules/@types/react/index.d.ts","../compose/build-types/utils/create-higher-order-component/index.d.ts","../compose/build-types/utils/debounce/index.d.ts","../compose/build-types/utils/throttle/index.d.ts","../compose/build-types/higher-order/compose.d.ts","../compose/build-types/higher-order/pipe.d.ts","../compose/build-types/higher-order/if-condition/index.d.ts","../compose/build-types/higher-order/pure/index.d.ts","../compose/build-types/higher-order/with-global-events/index.d.ts","../compose/build-types/higher-order/with-instance-id/index.d.ts","../compose/build-types/higher-order/with-safe-timeout/index.d.ts","../compose/build-types/higher-order/with-state/index.d.ts","../compose/build-types/hooks/use-constrained-tabbing/index.d.ts","../compose/build-types/hooks/use-copy-on-click/index.d.ts","../compose/build-types/hooks/use-copy-to-clipboard/index.d.ts","../compose/build-types/hooks/use-focus-on-mount/index.d.ts","../compose/build-types/hooks/use-focus-outside/index.d.ts","../compose/build-types/hooks/use-dialog/index.d.ts","../compose/build-types/hooks/use-disabled/index.d.ts","../compose/build-types/hooks/use-dragging/index.d.ts","../compose/build-types/hooks/use-focus-return/index.d.ts","../compose/build-types/hooks/use-instance-id/index.d.ts","../element/build-types/create-interpolate-element.d.ts","../element/build-types/react.d.ts","../../node_modules/@types/react-dom/index.d.ts","../../node_modules/@types/react-dom/client.d.ts","../element/build-types/react-platform.d.ts","../element/build-types/utils.d.ts","../element/build-types/platform.d.ts","../element/build-types/serialize.d.ts","../element/build-types/raw-html.d.ts","../element/build-types/index.d.ts","../compose/build-types/hooks/use-isomorphic-layout-effect/index.d.ts","../../node_modules/@types/mousetrap/index.d.ts","../compose/build-types/hooks/use-keyboard-shortcut/index.d.ts","../compose/build-types/hooks/use-media-query/index.d.ts","../compose/build-types/hooks/use-previous/index.d.ts","../compose/build-types/hooks/use-reduced-motion/index.d.ts","../compose/build-types/hooks/use-state-with-history/index.d.ts","../compose/build-types/hooks/use-viewport-match/index.d.ts","../compose/build-types/hooks/use-resize-observer/index.d.ts","../compose/build-types/hooks/use-async-list/index.d.ts","../compose/build-types/hooks/use-warn-on-change/index.d.ts","../compose/build-types/hooks/use-debounce/index.d.ts","../compose/build-types/hooks/use-throttle/index.d.ts","../compose/build-types/hooks/use-merge-refs/index.d.ts","../compose/build-types/hooks/use-ref-effect/index.d.ts","../compose/build-types/hooks/use-drop-zone/index.d.ts","../compose/build-types/hooks/use-focusable-iframe/index.d.ts","../compose/build-types/hooks/use-fixed-window-list/index.d.ts","../compose/build-types/index.d.ts","./src/redux-store/combine-reducers.js","../private-apis/build-types/implementation.d.ts","../private-apis/build-types/index.d.ts","./src/lock-unlock.js","../../node_modules/is-promise/index.d.ts","./src/promise-middleware.js","./src/resolvers-cache-middleware.js","./src/redux-store/thunk-middleware.js","./src/redux-store/metadata/utils.ts","./src/redux-store/metadata/actions.js","./src/redux-store/metadata/reducer.ts","../../node_modules/rememo/rememo.d.ts","./src/redux-store/metadata/selectors.js","./src/redux-store/index.js","./src/store/index.js","./src/utils/emitter.js","./src/registry.js","./src/default-registry.js","./src/dispatch.ts","../../node_modules/is-plain-object/is-plain-object.d.ts","../../node_modules/deepmerge/index.d.ts","./src/plugins/persistence/storage/object.js","./src/plugins/persistence/storage/default.js","./src/plugins/persistence/index.js","./src/plugins/index.js","../priority-queue/build-types/index.d.ts","../is-shallow-equal/build-types/objects.d.ts","../is-shallow-equal/build-types/arrays.d.ts","../is-shallow-equal/build-types/index.d.ts","./src/components/registry-provider/context.js","./src/components/registry-provider/use-registry.js","./src/components/async-mode-provider/context.js","./src/components/async-mode-provider/use-async-mode.js","./src/components/use-select/index.js","./src/components/with-select/index.js","./src/components/use-dispatch/use-dispatch.js","./src/components/use-dispatch/use-dispatch-with-map.js","./src/components/use-dispatch/index.js","./src/components/with-dispatch/index.js","./src/components/registry-provider/index.js","./src/components/with-registry/index.js","./src/components/async-mode-provider/index.js","./src/select.ts","./src/index.js","./src/redux-store/metadata/equivalent-key-map.d.ts"],"fileInfos":[{"version":"f59215c5f1d886b05395ee7aca73e0ac69ddfad2843aa88530e797879d511bad","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","27147504487dc1159369da4f4da8a26406364624fa9bc3db632f7d94a5bae2c3","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","f4e736d6c8d69ae5b3ab0ddfcaa3dc365c3e76909d6660af5b4e979b3934ac20","eeeb3aca31fbadef8b82502484499dfd1757204799a6f5b33116201c810676ec",{"version":"3dda5344576193a4ae48b8d03f105c86f20b2f2aff0a1d1fd7935f5d68649654","affectsGlobalScope":true},{"version":"9d9885c728913c1d16e0d2831b40341d6ad9a0ceecaabc55209b306ad9c736a5","affectsGlobalScope":true},{"version":"17bea081b9c0541f39dd1ae9bc8c78bdd561879a682e60e2f25f688c0ecab248","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"ab22100fdd0d24cfc2cc59d0a00fc8cf449830d9c4030dc54390a46bd562e929","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"36ae84ccc0633f7c0787bc6108386c8b773e95d3b052d9464a99cd9b8795fbec","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"f06948deb2a51aae25184561c9640fb66afeddb34531a9212d011792b1d19e0a","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"709efdae0cb5df5f49376cde61daacc95cdd44ae4671da13a540da5088bf3f30","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"61ed9b6d07af959e745fb11f9593ecd743b279418cc8a99448ea3cd5f3b3eb22","affectsGlobalScope":true},{"version":"038a2f66a34ee7a9c2fbc3584c8ab43dff2995f8c68e3f566f4c300d2175e31e","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"f5c92f2c27b06c1a41b88f6db8299205aee52c2a2943f7ed29bd585977f254e8","affectsGlobalScope":true},{"version":"930b0e15811f84e203d3c23508674d5ded88266df4b10abee7b31b2ac77632d2","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"b9ea5778ff8b50d7c04c9890170db34c26a5358cccba36844fe319f50a43a61a","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"25de46552b782d43cb7284df22fe2a265de387cf0248b747a7a1b647d81861f6","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"189c0703923150aa30673fa3de411346d727cc44a11c75d05d7cf9ef095daa22","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},{"version":"750b0952483dfc1a963abad82bffc11d16267e830ad9c02e2ac04ae4011d4743","signature":"9481c72104c81bcf6384d66fec925883e1cfc251ec79911b224c020402fcca43"},{"version":"8f19251323456195ec9236df857bac3b8f97b73b540ef06ead2ceccc3884954f","affectsGlobalScope":true},{"version":"9187c63478d0b5d7558808e8bbeeee910b73a87bd7e2314d12aef5a54b60534f","signature":"b87862101a0bc834b490d40f203e7550d38ba119fbb4b7cf1a3fe5d62e3aa62d"},{"version":"e382a7658f76f31d91f33c404b9526eeee7938eb4aee831feb51a3ba0e40a321","signature":"8c2a4bbd3555d93ed90e0c99548acc2b32c260cddafecec4b4cd454c1424ad1e"},"bd0d80db12ef1aceefc4f9d3eb88517b9634fa747ae8475981da8655292feab8","55e68fb1618e3f55f7866b8c8415152159309a14b716370081ab0b7af96d876e","bf0491af2455f92282b61807be2be6e7ad7d532e47fac7b698019d3617c28ff7","5d874fb879ab8601c02549817dceb2d0a30729cb7e161625dd6f819bbff1ec0b","ee551a880882770c4f56a0964a9767c9feafe497a5be52652527d098c88d85cb","111864872d90aef86668951ee1765f09e9def8de81160a1ddc3312f2766989ab","a1a9bdabeeb22c50cd0fbae1ca01a15ebe75a1adb5a9e7c27b3d23eb8b10441d",{"version":"bbdf156fea2fabed31a569445835aeedcc33643d404fcbaa54541f06c109df3f","affectsGlobalScope":true},"4c68749a564a6facdf675416d75789ee5a557afda8960e0803cf6711fa569288","f7b46d22a307739c145e5fddf537818038fdfffd580d79ed717f4d4d37249380","f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",{"version":"5917af4ff931b050dba49a1dedd9c00f15f7b3dc4345ad8491bfacd2ec68ed32","affectsGlobalScope":true},"33ac93038bb0401ec8d626b8e9283233a83e185b72de6af25e2be198c142af7c","5770292808bdac9e809cde7178a187cce89dcd6ce72979c1d1d099d213067671","49f44b9e32a9d528a264cc9cf1caeb63fb8e784ad6593ae4db97b8d55958487e","fc1233533790a4225cd78fe456ad42066f5ede6ed5c9338f04dacec955e8432b","4aad182af186a2df9306a344432307410992bb387f9dae22246d4198d970afc2","9e2e7bb9f856f9bc12840215ae088dbc2254f61ac59b13a5b057c231595cf259","c4313f128e258b621bda8c3429aee68bbf3e1a148a349b6407df01170d773d4a","1d2894af65430564ba12842214a8384c3edc94b9cf0e64538474d28acb288ab0","ee5c6b1a350cfffc56ceb3919c0e33fb037788f46689eb56e8a664813eac3f2d","101b9062bf99fffcd043805fb43f67acaa0bfe7495b324aa9b682372c98fd4ac","ae51096d7e513de636260729cce1c8cab0f03417bf7fd4a5fc3bc1e13066a3e0","184a90fe849d5227047070956c9507aea4884d97a7c4e16bc1d8bb2033aabbed","8c55bbcfff983c0e9afd933a35c73eaf8ee1186e3e86feb0e6ee237dd3e375bd","903129fde008533775b06a5ebdf00698e5fde5bf5652ff6c29c3f7e432c7378c","74015f799eaf1baad08d90b1b2ce91fab84d50ead10c58c699a858b717f63f41","28701b1e705eafec432aa5e8581e689c9bb9341bba6616f6d1f681025d32f221","e2248218e82b4e3df1e2f590c6e235c0e3987c50a8a087e3104964c61644bf78","f30b5c4f3570832ada75cb2c06e668934f9b9b9d437a10780b01effb53e2a9a2","2ac28d481be387f5cad74c06d1dd0d61b3d94953687e55043218c927c2ed18bb","26a6058ab933bbdcf633bf4029cbadea38c2d1f8fd516dd6f994546a906c5247","202ca9254496f06eb5fc5b14e7386a800579d34808ee327f43e97596d8845c1e","0c1c79ce1b4c085adce94f17891812ee1a8b76fc1de63dd0d9d80ea34034f389","470509b95e55f314470599d05bd8600eaf3c7bd10d35c94eea5f1ae3139a2bae","e4dd91dd4789a109aab51d8a0569a282369fcda9ba6f2b2297bc61bacfb1a042","83e27bbd7304ea67f9afa1535f1d4fdb15866089f0d893c784cbb5b1c6fb3386","472c14cdec534a465e866b6e1feee2d4e0d89c15fdc33ba80ff034fa0e80f3c1","4d807d55c784b72f71c092c34c84d09b95c29500c30252538fd5cf9a0a788c0e","df43a3968118d4b16618d7a0ac8ba89337fcce3c39e39984087ac34bf0cf250c","7f2497d56947331a6705c6c8d099b173d6fa7b90f5110c190cbca5cae1f3a09c","582f001c48a6204fd6bb5c6c71b36adc5256078c0ac3686b99db59cbb724ca73","af88a0b0f808a6721401550621bfe67c46c6fd55000305058e7c73600d119a9b","35bde1eadd47ade9e8fdad3888485ccbdcb27f718e4b1ad80241437c521f5ff8","96520a873073a2f39f922d0a422498cdcc28be9066a769000cdd07ecaba7b645","7302cf0bc39ea0cb42f0605035b2dddb048809d0cb2ce18af00547e0f4933c93","f1d2d2c3278068da7558b0e56945caf3716d63663da66d2d3fa1d5ba1672122f","35e96b392c3b0e1134be3c6e7c0c75f42daf09a1ed172f979d93078050a04645","ca4c88ef756cb9c6abd4b9ee2db0ee816f68484200f9e0c8a53363e44ab47374","a65a75f828f15734b92b18842c561b5dc8052ee2bf955aa8d8ce452bc7906cb1","2371b1f1d8ff771badcebc3944f9296c4ce5854c4051e5501d1fb43451230d19",{"version":"15f62f4185e8bb96097c0ea709bcc4d091dbe762f48076a08bae01d3014a01f6","affectsGlobalScope":true},"4b34ff3543e7b99f7b8f2125d0dc6ccacc11e9fa9f8e6de7a9cbd5d11a1ddd79","90358612694ff8f39093016eac40ee2fcd0fe2d98ec495463a23822f9498ef50","7217b5c129ccf4da64100067edd1cf89684c5843b047467c074acfd7ca3b384c","ea7224606ec74917a59437170337f3e1b38de98bc36d9e9d955bd5e484f40bbf","5cf71c5937450c62d091b5a43cfb545f7ff376cdf1d0271ac38f01a6198af88a","c728ed4d9edd0dadc4acf47b491683872bc24c1394d948139f718fdfdc3d8073","c3e7c912712adcd13af72f32caeb91de2f7a09880fd50747c690c91b29dfb7c3","fc2cb49e13333ce31695f24728e80eb1bd2e12f89936f618f122389d9b7598dc","4d7143da723a27bc1273d24da92da612538afec8fa226f5cd865b9715311ce16","f794b3d5508a0f9d7c77cca75e4b3d0e2f0e4808f7f9b5faffc168d6af4916bf",{"version":"e0504ea87fdc7dec18ce35a401d7e2047e58b54818318fde49727772fcdedd2f","signature":"c91163558b26e3122d9509f217eac4a204c38105c7b0075d9313606f475904ab"},"142d6426a67811d7bb2211ec07461b73302abc1c58f1b7c62a7f084d05717228","af7111a79dd6691e3168ce5b0feb86dc18b4e296e30d4994448b61f899967dd5",{"version":"8ef752d294a4ab29b7bbda576bc6d763bf727078e685537a695a812d83ecdaa0","signature":"64fa5d796f6f8071c5e5282d751646e1863a20756814c232f3ac7656c39070a6"},"5ac6404ddc5d622905e131dbc5da0362a82e89d1cb97cc8256bf06ca9fad4b24",{"version":"9fcfbc2dd0c0614b3a25d41e4425dd86cdfa574a9e7d2febffc85badcee1a0b8","signature":"895ef4cd86d49605f187c52ac4b77f8139f69df7e2f539c27196d72c75df7d31"},{"version":"f7bc005cc4797b7afe6e2a3a538248d346b943322edab6ab1cb332092ce55e3b","signature":"77ffa277b9d3e950e1db6577196590ca2a9d8ecb215359816aeae54c91fe3ab1"},{"version":"975eb852881942b64b42f35251bb55a75b6521e47c3eefe95d61f986265a5225","signature":"ebcf727b4ea8f6266308020bcf5a6f592bddc7ce27d49e88f0e04545305b5a8e"},{"version":"b86196ae20b726e4a42e00bbfc38361e5f751d3d738c952e659a1fbd60964d27","signature":"bfa6b4eb44114b5261a7dcf7d1e69f54af8bc4ab9a39fbe6063013f33ba8b641"},{"version":"c67951274199df6c887191adafac1c605901c3f6ce123351225e2e93c4282de4","signature":"8db3c1fe705300424e16eccb289f38f0f1fa48c0ba2f7ec73342b678c4582f5d"},{"version":"4fc2fcab4e27cceba55c653a6a35f9d9486ce732debfddfa946d0b7bab9229bb","signature":"00da318428374edba6adde61bea395981d1b13728c4dcc5b855f754b5112642e"},"d83d6ec306241a9a59716eadf007d405cbc9d77b688871089a02159087100d5c",{"version":"2729718058d854c0ad8f5c087ba29eed8474ab9a9e07ebf15eb700f06e64b1cb","signature":"2a46d538ae020f29311198de90a5480d05a0d7f7029a58771d0b467ba5426af4"},{"version":"fd5fb0b19cd760511769a1745fc1a05eb029f6cdbed2f4d89020825b759c8752","signature":"d23323d3fd4e48402abcbebffd8c2ec6b32ef4c217f78ac42bf866c2f6c4552c"},{"version":"48674187365141743eaadc4ffa47b457bfa63d36e945b8e4f43d60b0fe6b1907","signature":"26a926d714be0b62bd6e30976bdfc341ec31c2e95a0c30e88e9d971e8c74586f"},{"version":"412e9398be155d644b609b06bb2d0b6f99d86bf3d7db81b27a357ad8df07e0c0","signature":"b453c1a2eac87cc7083566d798ca756e0256165b9e47d7e3db00426cea8fc626"},{"version":"19c27d32b928fb696df567fd2102de34e948bba3550b30787590d15ae58c86ef","signature":"0c37cfbb515ee4df942133efa11132b16e9a3c8b2bf70f602337756d0783918b"},{"version":"c17118d21ac084068b77eb8e382d9f8988e26bded75c7f0f0b132fa67d4ca625","signature":"cc24820820bdd2761360a0d8f809cfa686294a0c4481c3a69a9c61336ec68b80"},{"version":"d9cf2d880112bcdf535b2e069cfc930c0be744548125758087b0d0f5f8bb5205","signature":"acc5e4fc8f5c67e0ec0b0e70a9aa47e928b4bf45439ca592309cbc1592764d4a"},"9a4c49a0b2bf8536b1f4a72f162f807d7a23aa27a816e9cd24cc965540ba4b35","146ba4b99c5feb82663e17a671bf9f53bb39c704cd76345d6c5a801c26372f44",{"version":"dc8a746041b9afc357038c00dc7bb204e7c758e5796e2b965782b10c010ea5da","signature":"3118e3f67853a4d11cd0225bdc00b683855c9fefa5a42bde70b5394b3b57551c"},{"version":"3c2eecbb08d00f262c3266a5729d8dc7033b12c10ad11085239d942330a66be4","signature":"0fadba7aa026b174f612f3ff924b5a2e9a6b53a70568d489f45afc375ad7cfcc"},{"version":"3b9adf4816bbbfce9644c253cc98f9c288ed843a47937b4c1b0cece533529907","signature":"829868d6ec1927e4700983dba2e0835327ecdd4d7f99072a3de19fda116551b4"},{"version":"50ed6e45c39d15e21c206f167abb7c33067931c37c8c660f1928e504a3ba6fda","signature":"0daf72d81e292312f185c81a2ad0648b226433a00d7d139addc06d39d078b2f1"},"2a57cbf1f516e1a2da6e22644f4517479c3ea3f28ff13aefcb1999c0d31c23f0","403d1ce0100de3871af7504ea28916adfc00f4ed05533299196020bb24a5f4f9","f2418af0b544a141cfb8f320b8b6599a4de8031d04554ae5b5a8f5f74983c99d","8de77521349d45f032ccb921923625d7c44116ad1a281ac331beda3197df59c2",{"version":"02fdc48e90772a67702e098b722a5772fddf789fb8aa961fc1e292655581df34","signature":"90b78b57b0842bd1fd5ec099a97cfb33146e6d2d52dd68d8a89ae834105ab366"},{"version":"e08f7f2e161bf3631ced28081d5b567ebce6f58dedc9930ec299b14f7dc52ae2","signature":"4a9216f87f9b92167b0b18cd90016000e71dd7ea61a95385b2b97be6585e9cb3"},{"version":"f5052fefcfa949e999a862b476c37116c29ce6f294c3dbd7f9e9fec0f2091f63","signature":"496a712363ee622ead98319bdf81471e550993b83529174068fce0f0e2db1615"},{"version":"c12fb0c4b324c65600609051919b1de0da4630c66bdbd4dc268efe7780ff4ed8","signature":"92deca0757666c0db63066e8307e28452fed66d809d5c1ef0554b0475e3b098b"},{"version":"72ca6e8ea835e7745c9b1ea837b815be119af34d6cd5e8ade16b9e53f9313929","signature":"887dc6c82444f5c7f3da9c1914b74a13bb46ca0f218deda5ea25d9fda2bef1b6"},{"version":"91f1c45fd1477bc5cb37a9d4fd53162b58192c01cc9e3d82c683f30a2d1d62c8","signature":"4acad5519af585dca63e9cb8fad17d8c6ab406cb272a0263f0507136f1736c06"},{"version":"42beccc3c85d59f68fd450eef31987bd96b8dab6c1f0365759f1361f4a2bab20","signature":"bc627141b934bcd56c4dd7c2cfd6e8a493e5aeca5d0cd654b2f64433504fa8ce"},{"version":"6469e0325b8d62347b79baf42ba957cc2401ce05378bfd521737c049554028ae","signature":"7f1be7e4a47f9abe89d28793e59d0d7a935c7f14a597f1e2b6651d1e54f23957"},{"version":"e6afc6c377cdc0b881c15db7be06fe57fbdbb4074753bb36abdc26000de853ee","signature":"39f82ec23c92368df0de1449bb26e14280862e092ab8e3eaacf80570ac35a7f2"},{"version":"39912ea790c688755e231a1fe88441c441a4b5d4f085c6d69082b3816c3d5b4b","signature":"82382b2041d0305af5dbc1fdf913319293ad163d9286f19914a15ed4920ddeef"},{"version":"6419036e9ec25b03fed142edef64280f5d7dbcc158170cb27899ecb9cb2dae8b","signature":"9798502506a30b631a4841a0c5e4dd369c8662c2ab08bf069fb464262cd9d9f8"},{"version":"4868b67fbbd8cbeee47a13fa7c3d725b2a79c3c0c808e8007160dc18bcdd163f","signature":"1e23589afc9b7799569b118d252a854a7411f206d3a6f1f8f479dad52faa7e8d"},{"version":"8d09f7a29021a69909eca56a60012bb043c703b82fbb1dede51186fedcce88f9","signature":"1a4f84d939445c350647adf2f5001ecc6fcef110b6daa79c11b3aa7c9984d0e1"},{"version":"593405def651364d973e4f004babc84c36d0975d0a51565bd15ba9e13cd17837","signature":"e7b7ca1fbfddbe67a3736393a170a4fe8d2929cdde754c08e4db38a03869ec94"},{"version":"707299fb29dbeab70e66353f5cc7f675af20ba880334ffc77900bb4c2bd875dc","signature":"292ce5a17ff2c76cea97f425a55a9cf3e7ea2b97de64e34f96e499fa3c32fd58"},"8eed414bd2305e20163d35205b450204002bf20e14c7241d7fec46bb18f174d2"],"root":[61,63,64,127,130,[132,137],[139,145],[148,151],[156,171]],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationDir":"./build-types","declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":false,"jsx":1,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUnusedLocals":true,"noUnusedParameters":false,"rootDir":"./src","strict":true,"target":99},"fileIdsList":[[76],[72,73,74,75],[65,66,67,68],[65],[66],[77],[76,77],[78],[76,91,92],[107],[76,109],[78,79],[77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,108,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125],[158,159],[107,158],[107,144],[156,157],[107,156],[162,163],[107,126,157],[63,157],[63,107,152,155,157,159],[76,126,164],[126,166],[76,126,160],[61,63],[143],[63,144],[61,63,64,140,143,144,145,151,160,161,164,165,166,167,168,169],[129],[150],[143,146,147,149,170],[148],[62,131],[62,63,64,71,126,127,130,132,133,134,136,137,139,171],[62,135,136,171],[135,137,138],[62],[63,70,130,140,141,142],[63],[69],[98,99,102,103,104,105,106],[100,101],[153,154],[155],[128],[76,143],[136,171],[137,138]],"referencedMap":[[101,1],[100,1],[76,2],[69,3],[66,4],[67,5],[82,1],[83,1],[85,6],[86,7],[88,1],[89,1],[90,1],[119,8],[93,9],[94,1],[95,1],[123,1],[125,1],[91,1],[96,1],[124,1],[108,10],[110,11],[121,1],[122,1],[116,1],[120,12],[115,1],[126,13],[77,1],[158,10],[168,14],[159,15],[156,16],[166,17],[157,18],[164,19],[163,20],[162,21],[160,22],[165,23],[167,24],[161,25],[64,26],[144,27],[145,28],[170,29],[130,30],[151,31],[150,32],[149,33],[132,34],[140,35],[137,36],[139,37],[135,38],[143,39],[133,27],[169,28],[63,38],[142,40],[70,41],[98,1],[107,42],[106,1],[102,43],[99,1],[105,1],[155,44],[153,45],[129,46],[71,38]],"exportedModulesMap":[[101,1],[100,1],[76,2],[69,3],[66,4],[67,5],[82,1],[83,1],[85,6],[86,7],[88,1],[89,1],[90,1],[119,8],[93,9],[94,1],[95,1],[123,1],[125,1],[91,1],[96,1],[124,1],[108,10],[110,11],[121,1],[122,1],[116,1],[120,12],[115,1],[126,13],[77,1],[158,1],[156,47],[162,40],[160,40],[165,1],[167,1],[161,1],[64,40],[144,27],[145,40],[170,40],[150,27],[132,38],[140,40],[137,48],[139,49],[135,38],[143,40],[133,27],[169,40],[63,38],[142,40],[70,41],[98,1],[107,42],[106,1],[102,43],[99,1],[105,1],[155,44],[153,45],[129,46],[71,38]],"semanticDiagnosticsPerFile":[109,74,101,100,72,76,75,73,147,146,131,62,138,59,60,12,14,13,2,15,16,17,18,19,20,21,22,3,4,26,23,24,25,27,28,29,5,30,31,32,33,6,37,34,35,36,38,7,39,44,45,40,41,42,43,8,49,46,47,48,50,9,51,52,53,56,54,55,57,10,1,11,58,65,68,69,66,67,80,82,81,83,84,85,86,87,117,88,89,90,119,93,94,95,123,125,91,92,96,124,97,108,110,111,121,112,113,122,116,114,120,115,118,126,77,78,79,158,168,159,156,166,157,164,163,162,160,165,167,161,64,144,145,61,170,130,151,150,149,148,132,127,140,136,171,137,139,135,134,143,133,169,141,63,142,70,98,107,104,106,102,99,105,103,154,155,153,152,128,129,71],"latestChangedDtsFile":"./build-types/index.d.ts"},"version":"5.1.6"}
|
|
1
|
+
{"program":{"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/typescript/lib/lib.es2023.d.ts","../../node_modules/typescript/lib/lib.esnext.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","./src/factory.js","../../node_modules/redux/index.d.ts","./src/types.ts","./src/controls.js","../../node_modules/utility-types/dist/aliases-and-guards.d.ts","../../node_modules/utility-types/dist/mapped-types.d.ts","../../node_modules/utility-types/dist/utility-types.d.ts","../../node_modules/utility-types/dist/functional-helpers.d.ts","../../node_modules/utility-types/dist/index.d.ts","../deprecated/build-types/index.d.ts","../redux-routine/build-types/index.d.ts","../../node_modules/@types/react/global.d.ts","../../node_modules/csstype/index.d.ts","../../node_modules/@types/prop-types/index.d.ts","../../node_modules/@types/scheduler/tracing.d.ts","../../node_modules/@types/react/index.d.ts","../compose/build-types/utils/create-higher-order-component/index.d.ts","../compose/build-types/utils/debounce/index.d.ts","../compose/build-types/utils/throttle/index.d.ts","../compose/build-types/higher-order/compose.d.ts","../compose/build-types/higher-order/pipe.d.ts","../compose/build-types/higher-order/if-condition/index.d.ts","../compose/build-types/higher-order/pure/index.d.ts","../compose/build-types/higher-order/with-global-events/index.d.ts","../compose/build-types/higher-order/with-instance-id/index.d.ts","../compose/build-types/higher-order/with-safe-timeout/index.d.ts","../compose/build-types/higher-order/with-state/index.d.ts","../compose/build-types/hooks/use-constrained-tabbing/index.d.ts","../compose/build-types/hooks/use-copy-on-click/index.d.ts","../compose/build-types/hooks/use-copy-to-clipboard/index.d.ts","../compose/build-types/hooks/use-focus-on-mount/index.d.ts","../compose/build-types/hooks/use-focus-outside/index.d.ts","../compose/build-types/hooks/use-dialog/index.d.ts","../compose/build-types/hooks/use-disabled/index.d.ts","../compose/build-types/hooks/use-dragging/index.d.ts","../compose/build-types/hooks/use-focus-return/index.d.ts","../compose/build-types/hooks/use-instance-id/index.d.ts","../element/build-types/create-interpolate-element.d.ts","../element/build-types/react.d.ts","../../node_modules/@types/react-dom/index.d.ts","../../node_modules/@types/react-dom/client.d.ts","../element/build-types/react-platform.d.ts","../element/build-types/utils.d.ts","../element/build-types/platform.d.ts","../element/build-types/serialize.d.ts","../element/build-types/raw-html.d.ts","../element/build-types/index.d.ts","../compose/build-types/hooks/use-isomorphic-layout-effect/index.d.ts","../../node_modules/@types/mousetrap/index.d.ts","../compose/build-types/hooks/use-keyboard-shortcut/index.d.ts","../compose/build-types/hooks/use-media-query/index.d.ts","../compose/build-types/hooks/use-previous/index.d.ts","../compose/build-types/hooks/use-reduced-motion/index.d.ts","../compose/build-types/hooks/use-state-with-history/index.d.ts","../compose/build-types/hooks/use-viewport-match/index.d.ts","../compose/build-types/hooks/use-resize-observer/index.d.ts","../compose/build-types/hooks/use-async-list/index.d.ts","../compose/build-types/hooks/use-warn-on-change/index.d.ts","../compose/build-types/hooks/use-debounce/index.d.ts","../compose/build-types/hooks/use-debounced-input/index.d.ts","../compose/build-types/hooks/use-throttle/index.d.ts","../compose/build-types/hooks/use-merge-refs/index.d.ts","../compose/build-types/hooks/use-ref-effect/index.d.ts","../compose/build-types/hooks/use-drop-zone/index.d.ts","../compose/build-types/hooks/use-focusable-iframe/index.d.ts","../compose/build-types/hooks/use-fixed-window-list/index.d.ts","../compose/build-types/index.d.ts","./src/redux-store/combine-reducers.js","../private-apis/build-types/implementation.d.ts","../private-apis/build-types/index.d.ts","./src/lock-unlock.js","../../node_modules/is-promise/index.d.ts","./src/promise-middleware.js","./src/resolvers-cache-middleware.js","./src/redux-store/thunk-middleware.js","./src/redux-store/metadata/utils.ts","./src/redux-store/metadata/actions.js","./src/redux-store/metadata/reducer.ts","../../node_modules/rememo/rememo.d.ts","./src/redux-store/metadata/selectors.js","./src/redux-store/index.js","./src/store/index.js","./src/utils/emitter.js","./src/registry.js","./src/default-registry.js","./src/dispatch.ts","../../node_modules/is-plain-object/is-plain-object.d.ts","../../node_modules/deepmerge/index.d.ts","./src/plugins/persistence/storage/object.js","./src/plugins/persistence/storage/default.js","./src/plugins/persistence/index.js","./src/plugins/index.js","../priority-queue/build-types/index.d.ts","../is-shallow-equal/build-types/objects.d.ts","../is-shallow-equal/build-types/arrays.d.ts","../is-shallow-equal/build-types/index.d.ts","./src/components/registry-provider/context.js","./src/components/registry-provider/use-registry.js","./src/components/async-mode-provider/context.js","./src/components/async-mode-provider/use-async-mode.js","./src/components/use-select/index.js","./src/components/with-select/index.js","./src/components/use-dispatch/use-dispatch.js","./src/components/use-dispatch/use-dispatch-with-map.js","./src/components/use-dispatch/index.js","./src/components/with-dispatch/index.js","./src/components/registry-provider/index.js","./src/components/with-registry/index.js","./src/components/async-mode-provider/index.js","./src/select.ts","./src/index.js","./src/redux-store/metadata/equivalent-key-map.d.ts"],"fileInfos":[{"version":"f59215c5f1d886b05395ee7aca73e0ac69ddfad2843aa88530e797879d511bad","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","27147504487dc1159369da4f4da8a26406364624fa9bc3db632f7d94a5bae2c3","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","f4e736d6c8d69ae5b3ab0ddfcaa3dc365c3e76909d6660af5b4e979b3934ac20","eeeb3aca31fbadef8b82502484499dfd1757204799a6f5b33116201c810676ec",{"version":"3dda5344576193a4ae48b8d03f105c86f20b2f2aff0a1d1fd7935f5d68649654","affectsGlobalScope":true},{"version":"9d9885c728913c1d16e0d2831b40341d6ad9a0ceecaabc55209b306ad9c736a5","affectsGlobalScope":true},{"version":"17bea081b9c0541f39dd1ae9bc8c78bdd561879a682e60e2f25f688c0ecab248","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"ab22100fdd0d24cfc2cc59d0a00fc8cf449830d9c4030dc54390a46bd562e929","affectsGlobalScope":true},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true},{"version":"36ae84ccc0633f7c0787bc6108386c8b773e95d3b052d9464a99cd9b8795fbec","affectsGlobalScope":true},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true},{"version":"f06948deb2a51aae25184561c9640fb66afeddb34531a9212d011792b1d19e0a","affectsGlobalScope":true},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"709efdae0cb5df5f49376cde61daacc95cdd44ae4671da13a540da5088bf3f30","affectsGlobalScope":true},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true},{"version":"61ed9b6d07af959e745fb11f9593ecd743b279418cc8a99448ea3cd5f3b3eb22","affectsGlobalScope":true},{"version":"038a2f66a34ee7a9c2fbc3584c8ab43dff2995f8c68e3f566f4c300d2175e31e","affectsGlobalScope":true},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true},{"version":"f5c92f2c27b06c1a41b88f6db8299205aee52c2a2943f7ed29bd585977f254e8","affectsGlobalScope":true},{"version":"930b0e15811f84e203d3c23508674d5ded88266df4b10abee7b31b2ac77632d2","affectsGlobalScope":true},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true},{"version":"b9ea5778ff8b50d7c04c9890170db34c26a5358cccba36844fe319f50a43a61a","affectsGlobalScope":true},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true},{"version":"25de46552b782d43cb7284df22fe2a265de387cf0248b747a7a1b647d81861f6","affectsGlobalScope":true},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true},{"version":"189c0703923150aa30673fa3de411346d727cc44a11c75d05d7cf9ef095daa22","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},{"version":"750b0952483dfc1a963abad82bffc11d16267e830ad9c02e2ac04ae4011d4743","signature":"9481c72104c81bcf6384d66fec925883e1cfc251ec79911b224c020402fcca43"},{"version":"8f19251323456195ec9236df857bac3b8f97b73b540ef06ead2ceccc3884954f","affectsGlobalScope":true},{"version":"9187c63478d0b5d7558808e8bbeeee910b73a87bd7e2314d12aef5a54b60534f","signature":"b87862101a0bc834b490d40f203e7550d38ba119fbb4b7cf1a3fe5d62e3aa62d"},{"version":"e382a7658f76f31d91f33c404b9526eeee7938eb4aee831feb51a3ba0e40a321","signature":"8c2a4bbd3555d93ed90e0c99548acc2b32c260cddafecec4b4cd454c1424ad1e"},"bd0d80db12ef1aceefc4f9d3eb88517b9634fa747ae8475981da8655292feab8","55e68fb1618e3f55f7866b8c8415152159309a14b716370081ab0b7af96d876e","bf0491af2455f92282b61807be2be6e7ad7d532e47fac7b698019d3617c28ff7","5d874fb879ab8601c02549817dceb2d0a30729cb7e161625dd6f819bbff1ec0b","ee551a880882770c4f56a0964a9767c9feafe497a5be52652527d098c88d85cb","111864872d90aef86668951ee1765f09e9def8de81160a1ddc3312f2766989ab","a1a9bdabeeb22c50cd0fbae1ca01a15ebe75a1adb5a9e7c27b3d23eb8b10441d",{"version":"bbdf156fea2fabed31a569445835aeedcc33643d404fcbaa54541f06c109df3f","affectsGlobalScope":true},"4c68749a564a6facdf675416d75789ee5a557afda8960e0803cf6711fa569288","f7b46d22a307739c145e5fddf537818038fdfffd580d79ed717f4d4d37249380","f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",{"version":"5917af4ff931b050dba49a1dedd9c00f15f7b3dc4345ad8491bfacd2ec68ed32","affectsGlobalScope":true},"33ac93038bb0401ec8d626b8e9283233a83e185b72de6af25e2be198c142af7c","5770292808bdac9e809cde7178a187cce89dcd6ce72979c1d1d099d213067671","49f44b9e32a9d528a264cc9cf1caeb63fb8e784ad6593ae4db97b8d55958487e","fc1233533790a4225cd78fe456ad42066f5ede6ed5c9338f04dacec955e8432b","4aad182af186a2df9306a344432307410992bb387f9dae22246d4198d970afc2","9e2e7bb9f856f9bc12840215ae088dbc2254f61ac59b13a5b057c231595cf259","c4313f128e258b621bda8c3429aee68bbf3e1a148a349b6407df01170d773d4a","1d2894af65430564ba12842214a8384c3edc94b9cf0e64538474d28acb288ab0","ee5c6b1a350cfffc56ceb3919c0e33fb037788f46689eb56e8a664813eac3f2d","101b9062bf99fffcd043805fb43f67acaa0bfe7495b324aa9b682372c98fd4ac","ae51096d7e513de636260729cce1c8cab0f03417bf7fd4a5fc3bc1e13066a3e0","184a90fe849d5227047070956c9507aea4884d97a7c4e16bc1d8bb2033aabbed","8c55bbcfff983c0e9afd933a35c73eaf8ee1186e3e86feb0e6ee237dd3e375bd","903129fde008533775b06a5ebdf00698e5fde5bf5652ff6c29c3f7e432c7378c","74015f799eaf1baad08d90b1b2ce91fab84d50ead10c58c699a858b717f63f41","28701b1e705eafec432aa5e8581e689c9bb9341bba6616f6d1f681025d32f221","e2248218e82b4e3df1e2f590c6e235c0e3987c50a8a087e3104964c61644bf78","f30b5c4f3570832ada75cb2c06e668934f9b9b9d437a10780b01effb53e2a9a2","2ac28d481be387f5cad74c06d1dd0d61b3d94953687e55043218c927c2ed18bb","26a6058ab933bbdcf633bf4029cbadea38c2d1f8fd516dd6f994546a906c5247","202ca9254496f06eb5fc5b14e7386a800579d34808ee327f43e97596d8845c1e","0c1c79ce1b4c085adce94f17891812ee1a8b76fc1de63dd0d9d80ea34034f389","470509b95e55f314470599d05bd8600eaf3c7bd10d35c94eea5f1ae3139a2bae","e4dd91dd4789a109aab51d8a0569a282369fcda9ba6f2b2297bc61bacfb1a042","83e27bbd7304ea67f9afa1535f1d4fdb15866089f0d893c784cbb5b1c6fb3386","472c14cdec534a465e866b6e1feee2d4e0d89c15fdc33ba80ff034fa0e80f3c1","4d807d55c784b72f71c092c34c84d09b95c29500c30252538fd5cf9a0a788c0e","df43a3968118d4b16618d7a0ac8ba89337fcce3c39e39984087ac34bf0cf250c","7f2497d56947331a6705c6c8d099b173d6fa7b90f5110c190cbca5cae1f3a09c","582f001c48a6204fd6bb5c6c71b36adc5256078c0ac3686b99db59cbb724ca73","af88a0b0f808a6721401550621bfe67c46c6fd55000305058e7c73600d119a9b","35bde1eadd47ade9e8fdad3888485ccbdcb27f718e4b1ad80241437c521f5ff8","96520a873073a2f39f922d0a422498cdcc28be9066a769000cdd07ecaba7b645","7302cf0bc39ea0cb42f0605035b2dddb048809d0cb2ce18af00547e0f4933c93","f1d2d2c3278068da7558b0e56945caf3716d63663da66d2d3fa1d5ba1672122f","35e96b392c3b0e1134be3c6e7c0c75f42daf09a1ed172f979d93078050a04645","ca4c88ef756cb9c6abd4b9ee2db0ee816f68484200f9e0c8a53363e44ab47374","a65a75f828f15734b92b18842c561b5dc8052ee2bf955aa8d8ce452bc7906cb1","2371b1f1d8ff771badcebc3944f9296c4ce5854c4051e5501d1fb43451230d19",{"version":"15f62f4185e8bb96097c0ea709bcc4d091dbe762f48076a08bae01d3014a01f6","affectsGlobalScope":true},"4b34ff3543e7b99f7b8f2125d0dc6ccacc11e9fa9f8e6de7a9cbd5d11a1ddd79","90358612694ff8f39093016eac40ee2fcd0fe2d98ec495463a23822f9498ef50","7217b5c129ccf4da64100067edd1cf89684c5843b047467c074acfd7ca3b384c","9d5c955581f7529f3b68d9a63d703c389807441106e51e604d2cd0b613aaa952","ea7224606ec74917a59437170337f3e1b38de98bc36d9e9d955bd5e484f40bbf","5cf71c5937450c62d091b5a43cfb545f7ff376cdf1d0271ac38f01a6198af88a","c728ed4d9edd0dadc4acf47b491683872bc24c1394d948139f718fdfdc3d8073","c3e7c912712adcd13af72f32caeb91de2f7a09880fd50747c690c91b29dfb7c3","fc2cb49e13333ce31695f24728e80eb1bd2e12f89936f618f122389d9b7598dc","4d7143da723a27bc1273d24da92da612538afec8fa226f5cd865b9715311ce16","25092d3e6e29889bf0eea39873006da9114433da3e475d8d92943f7abf59a3af",{"version":"e0504ea87fdc7dec18ce35a401d7e2047e58b54818318fde49727772fcdedd2f","signature":"c91163558b26e3122d9509f217eac4a204c38105c7b0075d9313606f475904ab"},"142d6426a67811d7bb2211ec07461b73302abc1c58f1b7c62a7f084d05717228","af7111a79dd6691e3168ce5b0feb86dc18b4e296e30d4994448b61f899967dd5",{"version":"8ef752d294a4ab29b7bbda576bc6d763bf727078e685537a695a812d83ecdaa0","signature":"64fa5d796f6f8071c5e5282d751646e1863a20756814c232f3ac7656c39070a6"},"5ac6404ddc5d622905e131dbc5da0362a82e89d1cb97cc8256bf06ca9fad4b24",{"version":"9fcfbc2dd0c0614b3a25d41e4425dd86cdfa574a9e7d2febffc85badcee1a0b8","signature":"895ef4cd86d49605f187c52ac4b77f8139f69df7e2f539c27196d72c75df7d31"},{"version":"f7bc005cc4797b7afe6e2a3a538248d346b943322edab6ab1cb332092ce55e3b","signature":"77ffa277b9d3e950e1db6577196590ca2a9d8ecb215359816aeae54c91fe3ab1"},{"version":"975eb852881942b64b42f35251bb55a75b6521e47c3eefe95d61f986265a5225","signature":"ebcf727b4ea8f6266308020bcf5a6f592bddc7ce27d49e88f0e04545305b5a8e"},{"version":"b86196ae20b726e4a42e00bbfc38361e5f751d3d738c952e659a1fbd60964d27","signature":"bfa6b4eb44114b5261a7dcf7d1e69f54af8bc4ab9a39fbe6063013f33ba8b641"},{"version":"c67951274199df6c887191adafac1c605901c3f6ce123351225e2e93c4282de4","signature":"8db3c1fe705300424e16eccb289f38f0f1fa48c0ba2f7ec73342b678c4582f5d"},{"version":"4fc2fcab4e27cceba55c653a6a35f9d9486ce732debfddfa946d0b7bab9229bb","signature":"00da318428374edba6adde61bea395981d1b13728c4dcc5b855f754b5112642e"},"d83d6ec306241a9a59716eadf007d405cbc9d77b688871089a02159087100d5c",{"version":"2729718058d854c0ad8f5c087ba29eed8474ab9a9e07ebf15eb700f06e64b1cb","signature":"2a46d538ae020f29311198de90a5480d05a0d7f7029a58771d0b467ba5426af4"},{"version":"fd5fb0b19cd760511769a1745fc1a05eb029f6cdbed2f4d89020825b759c8752","signature":"d23323d3fd4e48402abcbebffd8c2ec6b32ef4c217f78ac42bf866c2f6c4552c"},{"version":"48674187365141743eaadc4ffa47b457bfa63d36e945b8e4f43d60b0fe6b1907","signature":"26a926d714be0b62bd6e30976bdfc341ec31c2e95a0c30e88e9d971e8c74586f"},{"version":"412e9398be155d644b609b06bb2d0b6f99d86bf3d7db81b27a357ad8df07e0c0","signature":"b453c1a2eac87cc7083566d798ca756e0256165b9e47d7e3db00426cea8fc626"},{"version":"19c27d32b928fb696df567fd2102de34e948bba3550b30787590d15ae58c86ef","signature":"0c37cfbb515ee4df942133efa11132b16e9a3c8b2bf70f602337756d0783918b"},{"version":"c17118d21ac084068b77eb8e382d9f8988e26bded75c7f0f0b132fa67d4ca625","signature":"cc24820820bdd2761360a0d8f809cfa686294a0c4481c3a69a9c61336ec68b80"},{"version":"d9cf2d880112bcdf535b2e069cfc930c0be744548125758087b0d0f5f8bb5205","signature":"acc5e4fc8f5c67e0ec0b0e70a9aa47e928b4bf45439ca592309cbc1592764d4a"},"9a4c49a0b2bf8536b1f4a72f162f807d7a23aa27a816e9cd24cc965540ba4b35","146ba4b99c5feb82663e17a671bf9f53bb39c704cd76345d6c5a801c26372f44",{"version":"dc8a746041b9afc357038c00dc7bb204e7c758e5796e2b965782b10c010ea5da","signature":"3118e3f67853a4d11cd0225bdc00b683855c9fefa5a42bde70b5394b3b57551c"},{"version":"3c2eecbb08d00f262c3266a5729d8dc7033b12c10ad11085239d942330a66be4","signature":"0fadba7aa026b174f612f3ff924b5a2e9a6b53a70568d489f45afc375ad7cfcc"},{"version":"3b9adf4816bbbfce9644c253cc98f9c288ed843a47937b4c1b0cece533529907","signature":"829868d6ec1927e4700983dba2e0835327ecdd4d7f99072a3de19fda116551b4"},{"version":"50ed6e45c39d15e21c206f167abb7c33067931c37c8c660f1928e504a3ba6fda","signature":"0daf72d81e292312f185c81a2ad0648b226433a00d7d139addc06d39d078b2f1"},"2a57cbf1f516e1a2da6e22644f4517479c3ea3f28ff13aefcb1999c0d31c23f0","403d1ce0100de3871af7504ea28916adfc00f4ed05533299196020bb24a5f4f9","f2418af0b544a141cfb8f320b8b6599a4de8031d04554ae5b5a8f5f74983c99d","8de77521349d45f032ccb921923625d7c44116ad1a281ac331beda3197df59c2",{"version":"02fdc48e90772a67702e098b722a5772fddf789fb8aa961fc1e292655581df34","signature":"90b78b57b0842bd1fd5ec099a97cfb33146e6d2d52dd68d8a89ae834105ab366"},{"version":"e08f7f2e161bf3631ced28081d5b567ebce6f58dedc9930ec299b14f7dc52ae2","signature":"4a9216f87f9b92167b0b18cd90016000e71dd7ea61a95385b2b97be6585e9cb3"},{"version":"f5052fefcfa949e999a862b476c37116c29ce6f294c3dbd7f9e9fec0f2091f63","signature":"496a712363ee622ead98319bdf81471e550993b83529174068fce0f0e2db1615"},{"version":"c12fb0c4b324c65600609051919b1de0da4630c66bdbd4dc268efe7780ff4ed8","signature":"92deca0757666c0db63066e8307e28452fed66d809d5c1ef0554b0475e3b098b"},{"version":"7960cf5ee7ba1a5e13a32a18d37e4776ff1fba2019488e6aafe529145ded726d","signature":"887dc6c82444f5c7f3da9c1914b74a13bb46ca0f218deda5ea25d9fda2bef1b6"},{"version":"91f1c45fd1477bc5cb37a9d4fd53162b58192c01cc9e3d82c683f30a2d1d62c8","signature":"4acad5519af585dca63e9cb8fad17d8c6ab406cb272a0263f0507136f1736c06"},{"version":"42beccc3c85d59f68fd450eef31987bd96b8dab6c1f0365759f1361f4a2bab20","signature":"bc627141b934bcd56c4dd7c2cfd6e8a493e5aeca5d0cd654b2f64433504fa8ce"},{"version":"6469e0325b8d62347b79baf42ba957cc2401ce05378bfd521737c049554028ae","signature":"7f1be7e4a47f9abe89d28793e59d0d7a935c7f14a597f1e2b6651d1e54f23957"},{"version":"e6afc6c377cdc0b881c15db7be06fe57fbdbb4074753bb36abdc26000de853ee","signature":"39f82ec23c92368df0de1449bb26e14280862e092ab8e3eaacf80570ac35a7f2"},{"version":"39912ea790c688755e231a1fe88441c441a4b5d4f085c6d69082b3816c3d5b4b","signature":"82382b2041d0305af5dbc1fdf913319293ad163d9286f19914a15ed4920ddeef"},{"version":"6419036e9ec25b03fed142edef64280f5d7dbcc158170cb27899ecb9cb2dae8b","signature":"9798502506a30b631a4841a0c5e4dd369c8662c2ab08bf069fb464262cd9d9f8"},{"version":"4868b67fbbd8cbeee47a13fa7c3d725b2a79c3c0c808e8007160dc18bcdd163f","signature":"1e23589afc9b7799569b118d252a854a7411f206d3a6f1f8f479dad52faa7e8d"},{"version":"8d09f7a29021a69909eca56a60012bb043c703b82fbb1dede51186fedcce88f9","signature":"1a4f84d939445c350647adf2f5001ecc6fcef110b6daa79c11b3aa7c9984d0e1"},{"version":"593405def651364d973e4f004babc84c36d0975d0a51565bd15ba9e13cd17837","signature":"e7b7ca1fbfddbe67a3736393a170a4fe8d2929cdde754c08e4db38a03869ec94"},{"version":"707299fb29dbeab70e66353f5cc7f675af20ba880334ffc77900bb4c2bd875dc","signature":"292ce5a17ff2c76cea97f425a55a9cf3e7ea2b97de64e34f96e499fa3c32fd58"},"8eed414bd2305e20163d35205b450204002bf20e14c7241d7fec46bb18f174d2"],"root":[61,63,64,128,131,[133,138],[140,146],[149,152],[157,172]],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationDir":"./build-types","declarationMap":true,"emitDeclarationOnly":true,"esModuleInterop":false,"jsx":1,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitReturns":true,"noUnusedLocals":true,"noUnusedParameters":false,"rootDir":"./src","strict":true,"target":99},"fileIdsList":[[76],[72,73,74,75],[65,66,67,68],[65],[66],[77],[76,77],[78],[76,91,92],[107],[76,109],[78,79],[77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,108,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126],[159,160],[107,159],[107,145],[157,158],[107,157],[163,164],[107,127,158],[63,158],[63,107,153,156,158,160],[76,127,165],[127,167],[76,127,161],[61,63],[144],[63,145],[61,63,64,141,144,145,146,152,161,162,165,166,167,168,169,170],[130],[151],[144,147,148,150,171],[149],[62,132],[62,63,64,71,127,128,131,133,134,135,137,138,140,172],[62,136,137,172],[136,138,139],[62],[63,70,131,141,142,143],[63],[69],[98,99,102,103,104,105,106],[100,101],[154,155],[156],[129],[76,144],[137,172],[138,139]],"referencedMap":[[101,1],[100,1],[76,2],[69,3],[66,4],[67,5],[82,1],[83,1],[85,6],[86,7],[88,1],[89,1],[90,1],[119,8],[93,9],[94,1],[95,1],[124,1],[126,1],[91,1],[96,1],[125,1],[108,10],[110,11],[122,1],[123,1],[116,1],[121,12],[115,1],[127,13],[77,1],[159,10],[169,14],[160,15],[157,16],[167,17],[158,18],[165,19],[164,20],[163,21],[161,22],[166,23],[168,24],[162,25],[64,26],[145,27],[146,28],[171,29],[131,30],[152,31],[151,32],[150,33],[133,34],[141,35],[138,36],[140,37],[136,38],[144,39],[134,27],[170,28],[63,38],[143,40],[70,41],[98,1],[107,42],[106,1],[102,43],[99,1],[105,1],[156,44],[154,45],[130,46],[71,38]],"exportedModulesMap":[[101,1],[100,1],[76,2],[69,3],[66,4],[67,5],[82,1],[83,1],[85,6],[86,7],[88,1],[89,1],[90,1],[119,8],[93,9],[94,1],[95,1],[124,1],[126,1],[91,1],[96,1],[125,1],[108,10],[110,11],[122,1],[123,1],[116,1],[121,12],[115,1],[127,13],[77,1],[159,1],[157,47],[163,40],[161,40],[166,1],[168,1],[162,1],[64,40],[145,27],[146,40],[171,40],[151,27],[133,38],[141,40],[138,48],[140,49],[136,38],[144,40],[134,27],[170,40],[63,38],[143,40],[70,41],[98,1],[107,42],[106,1],[102,43],[99,1],[105,1],[156,44],[154,45],[130,46],[71,38]],"semanticDiagnosticsPerFile":[109,74,101,100,72,76,75,73,148,147,132,62,139,59,60,12,14,13,2,15,16,17,18,19,20,21,22,3,4,26,23,24,25,27,28,29,5,30,31,32,33,6,37,34,35,36,38,7,39,44,45,40,41,42,43,8,49,46,47,48,50,9,51,52,53,56,54,55,57,10,1,11,58,65,68,69,66,67,80,82,81,83,84,85,86,87,117,88,89,90,119,120,93,94,95,124,126,91,92,96,125,97,108,110,111,122,112,113,123,116,114,121,115,118,127,77,78,79,159,169,160,157,167,158,165,164,163,161,166,168,162,64,145,146,61,171,131,152,151,150,149,133,128,141,137,172,138,140,136,135,144,134,170,142,63,143,70,98,107,104,106,102,99,105,103,155,156,154,153,129,130,71],"latestChangedDtsFile":"./build-types/index.d.ts"},"version":"5.1.6"}
|