@wordpress/data 10.43.1-next.v.202604091042.0 → 10.45.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.
Files changed (41) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +26 -0
  3. package/build/components/use-select/index.cjs.map +2 -2
  4. package/build/index.cjs +3 -0
  5. package/build/index.cjs.map +2 -2
  6. package/build/redux-store/keyed-reducer.cjs +44 -0
  7. package/build/redux-store/keyed-reducer.cjs.map +7 -0
  8. package/build/redux-store/metadata/reducer.cjs +2 -1
  9. package/build/redux-store/metadata/reducer.cjs.map +2 -2
  10. package/build/redux-store/metadata/utils.cjs +0 -16
  11. package/build/redux-store/metadata/utils.cjs.map +2 -2
  12. package/build/types.cjs.map +1 -1
  13. package/build-module/components/use-select/index.mjs.map +2 -2
  14. package/build-module/index.mjs +2 -0
  15. package/build-module/index.mjs.map +2 -2
  16. package/build-module/redux-store/keyed-reducer.mjs +19 -0
  17. package/build-module/redux-store/keyed-reducer.mjs.map +7 -0
  18. package/build-module/redux-store/metadata/reducer.mjs +3 -2
  19. package/build-module/redux-store/metadata/reducer.mjs.map +2 -2
  20. package/build-module/redux-store/metadata/utils.mjs +0 -15
  21. package/build-module/redux-store/metadata/utils.mjs.map +2 -2
  22. package/build-types/components/use-select/index.d.ts.map +1 -1
  23. package/build-types/index.d.ts +1 -0
  24. package/build-types/index.d.ts.map +1 -1
  25. package/build-types/redux-store/keyed-reducer.d.ts +26 -0
  26. package/build-types/redux-store/keyed-reducer.d.ts.map +1 -0
  27. package/build-types/redux-store/metadata/reducer.d.ts.map +1 -1
  28. package/build-types/redux-store/metadata/utils.d.ts +0 -12
  29. package/build-types/redux-store/metadata/utils.d.ts.map +1 -1
  30. package/build-types/types.d.ts +8 -3
  31. package/build-types/types.d.ts.map +1 -1
  32. package/package.json +9 -9
  33. package/src/components/use-select/index.ts +6 -0
  34. package/src/components/use-select/test/index.js +6 -1
  35. package/src/index.ts +1 -0
  36. package/src/redux-store/keyed-reducer.ts +52 -0
  37. package/src/redux-store/metadata/reducer.ts +8 -4
  38. package/src/redux-store/metadata/test/utils.js +1 -38
  39. package/src/redux-store/metadata/utils.ts +0 -40
  40. package/src/redux-store/test/keyed-reducer.js +41 -0
  41. package/src/types.ts +14 -3
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
- "sourcesContent": ["/**\n * Internal dependencies\n */\nimport defaultRegistry from './default-registry';\nimport * as plugins from './plugins';\nimport { combineReducers as combineReducersModule } from './redux-store';\n\nimport type {\n\tStoreDescriptor,\n\tReduxStoreConfig,\n\tcombineReducers as CombineReducers,\n\tAnyConfig,\n\tCurriedSelectorsResolveOf,\n} from './types';\n\nexport { default as withSelect } from './components/with-select';\nexport { default as withDispatch } from './components/with-dispatch';\nexport { default as withRegistry } from './components/with-registry';\nexport {\n\tRegistryProvider,\n\tRegistryConsumer,\n\tuseRegistry,\n} from './components/registry-provider';\nexport {\n\tdefault as useSelect,\n\tuseSuspenseSelect,\n} from './components/use-select';\nexport { useDispatch } from './components/use-dispatch';\nexport { AsyncModeProvider } from './components/async-mode-provider';\nexport { createRegistry } from './registry';\nexport { createRegistrySelector, createRegistryControl } from './factory';\nexport { createSelector } from './create-selector';\nexport { controls } from './controls';\nexport { default as createReduxStore } from './redux-store';\nexport { dispatch } from './dispatch';\nexport { select } from './select';\n\nexport type * from './types';\n\n/**\n * Object of available plugins to use with a registry.\n *\n * @see [use](#use)\n */\nexport { plugins };\n\n/**\n * The combineReducers helper function turns an object whose values are different\n * reducing functions into a single reducing function you can pass to registerReducer.\n *\n * @type {import('./types').combineReducers}\n * @param {Object} reducers An object whose values correspond to different reducing\n * functions that need to be combined into one.\n *\n * @example\n * ```js\n * import { combineReducers, createReduxStore, register } from '@wordpress/data';\n *\n * const prices = ( state = {}, action ) => {\n * \treturn action.type === 'SET_PRICE' ?\n * \t\t{\n * \t\t\t...state,\n * \t\t\t[ action.item ]: action.price,\n * \t\t} :\n * \t\tstate;\n * };\n *\n * const discountPercent = ( state = 0, action ) => {\n * \treturn action.type === 'START_SALE' ?\n * \t\taction.discountPercent :\n * \t\tstate;\n * };\n *\n * const store = createReduxStore( 'my-shop', {\n * \treducer: combineReducers( {\n * \t\tprices,\n * \t\tdiscountPercent,\n * \t} ),\n * } );\n * register( store );\n * ```\n *\n * @return {Function} A reducer that invokes every reducer inside the reducers\n * object, and constructs a state object with the same shape.\n */\nexport const combineReducers =\n\tcombineReducersModule as unknown as CombineReducers;\n\n/**\n * Given a store descriptor, returns an object containing the store's selectors\n * pre-bound to state so that you only need to supply additional arguments, and\n * modified so that they return promises that resolve to their eventual values,\n * after any resolvers have ran.\n *\n * @param {StoreDescriptor|string} storeNameOrDescriptor The store descriptor. The legacy calling\n * convention of passing the store name is\n * also supported.\n *\n * @example\n * ```js\n * import { resolveSelect } from '@wordpress/data';\n * import { store as myCustomStore } from 'my-custom-store';\n *\n * resolveSelect( myCustomStore ).getPrice( 'hammer' ).then(console.log)\n * ```\n *\n * @return Object containing the store's promise-wrapped selectors.\n */\nexport function resolveSelect< T extends StoreDescriptor< AnyConfig > >(\n\tstoreNameOrDescriptor: T | string\n): CurriedSelectorsResolveOf< T > {\n\treturn defaultRegistry.resolveSelect(\n\t\tstoreNameOrDescriptor\n\t) as CurriedSelectorsResolveOf< T >;\n}\n\n/**\n * Given a store descriptor, returns an object containing the store's selectors pre-bound to state\n * so that you only need to supply additional arguments, and modified so that they throw promises\n * in case the selector is not resolved yet.\n *\n * @param {StoreDescriptor|string} storeNameOrDescriptor The store descriptor. The legacy calling\n * convention of passing the store name is\n * also supported.\n *\n * @return {Object} Object containing the store's suspense-wrapped selectors.\n */\nexport const suspendSelect = (\n\tstoreNameOrDescriptor:\n\t\t| string\n\t\t| StoreDescriptor< ReduxStoreConfig< any, any, any > >\n): any => defaultRegistry.suspendSelect( storeNameOrDescriptor );\n\n/**\n * Given a listener function, the function will be called any time the state value\n * of one of the registered stores has changed. If you specify the optional\n * `storeNameOrDescriptor` parameter, the listener function will be called only\n * on updates on that one specific registered store.\n *\n * This function returns an `unsubscribe` function used to stop the subscription.\n *\n * @param {Function} listener Callback function.\n * @param {string|StoreDescriptor?} storeNameOrDescriptor Optional store name.\n *\n * @example\n * ```js\n * import { subscribe } from '@wordpress/data';\n *\n * const unsubscribe = subscribe( () => {\n * \t// You could use this opportunity to test whether the derived result of a\n * \t// selector has subsequently changed as the result of a state update.\n * } );\n *\n * // Later, if necessary...\n * unsubscribe();\n * ```\n */\nexport const subscribe = (\n\tlistener: () => void,\n\tstoreNameOrDescriptor?:\n\t\t| string\n\t\t| StoreDescriptor< ReduxStoreConfig< any, any, any > >\n): ( () => void ) =>\n\tdefaultRegistry.subscribe( listener, storeNameOrDescriptor );\n\n/**\n * Registers a generic store instance.\n *\n * @deprecated Use `register( storeDescriptor )` instead.\n *\n * @param {string} name Store registry name.\n * @param {Object} store Store instance (`{ getSelectors, getActions, subscribe }`).\n */\nexport const registerGenericStore: Function =\n\tdefaultRegistry.registerGenericStore;\n\n/**\n * Registers a standard `@wordpress/data` store.\n *\n * @deprecated Use `register` instead.\n *\n * @param {string} storeName Unique namespace identifier for the store.\n * @param {Object} options Store description (reducer, actions, selectors, resolvers).\n *\n * @return {Object} Registered store object.\n */\nexport const registerStore: Function = defaultRegistry.registerStore;\n\n/**\n * Extends a registry to inherit functionality provided by a given plugin. A\n * plugin is an object with properties aligning to that of a registry, merged\n * to extend the default registry behavior.\n *\n * @param {Object} plugin Plugin object.\n */\nexport const use: any = defaultRegistry.use;\n\n/**\n * Registers a standard `@wordpress/data` store descriptor.\n *\n * @example\n * ```js\n * import { createReduxStore, register } from '@wordpress/data';\n *\n * const store = createReduxStore( 'demo', {\n * reducer: ( state = 'OK' ) => state,\n * selectors: {\n * getValue: ( state ) => state,\n * },\n * } );\n * register( store );\n * ```\n *\n * @param {StoreDescriptor} store Store descriptor.\n */\nexport const register = (\n\tstore: StoreDescriptor< ReduxStoreConfig< any, any, any > >\n): void => defaultRegistry.register( store );\n"],
5
- "mappings": ";AAGA,OAAO,qBAAqB;AAC5B,YAAY,aAAa;AACzB,SAAS,mBAAmB,6BAA6B;AAUzD,SAAoB,WAAXA,gBAA6B;AACtC,SAAoB,WAAXA,gBAA+B;AACxC,SAAoB,WAAXA,gBAA+B;AACxC;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP;AAAA,EACY,WAAXA;AAAA,EACA;AAAA,OACM;AACP,SAAS,mBAAmB;AAC5B,SAAS,yBAAyB;AAClC,SAAS,sBAAsB;AAC/B,SAAS,wBAAwB,6BAA6B;AAC9D,SAAS,sBAAsB;AAC/B,SAAS,gBAAgB;AACzB,SAAoB,WAAXA,gBAAmC;AAC5C,SAAS,gBAAgB;AACzB,SAAS,cAAc;AAkDhB,IAAM,kBACZ;AAsBM,SAAS,cACf,uBACiC;AACjC,SAAO,gBAAgB;AAAA,IACtB;AAAA,EACD;AACD;AAaO,IAAM,gBAAgB,CAC5B,0BAGS,gBAAgB,cAAe,qBAAsB;AA0BxD,IAAM,YAAY,CACxB,UACA,0BAIA,gBAAgB,UAAW,UAAU,qBAAsB;AAUrD,IAAM,uBACZ,gBAAgB;AAYV,IAAM,gBAA0B,gBAAgB;AAShD,IAAM,MAAW,gBAAgB;AAoBjC,IAAM,WAAW,CACvB,UACU,gBAAgB,SAAU,KAAM;",
4
+ "sourcesContent": ["/**\n * Internal dependencies\n */\nimport defaultRegistry from './default-registry';\nimport * as plugins from './plugins';\nimport { combineReducers as combineReducersModule } from './redux-store';\n\nimport type {\n\tStoreDescriptor,\n\tReduxStoreConfig,\n\tcombineReducers as CombineReducers,\n\tAnyConfig,\n\tCurriedSelectorsResolveOf,\n} from './types';\n\nexport { default as withSelect } from './components/with-select';\nexport { default as withDispatch } from './components/with-dispatch';\nexport { default as withRegistry } from './components/with-registry';\nexport {\n\tRegistryProvider,\n\tRegistryConsumer,\n\tuseRegistry,\n} from './components/registry-provider';\nexport {\n\tdefault as useSelect,\n\tuseSuspenseSelect,\n} from './components/use-select';\nexport { useDispatch } from './components/use-dispatch';\nexport { AsyncModeProvider } from './components/async-mode-provider';\nexport { createRegistry } from './registry';\nexport { createRegistrySelector, createRegistryControl } from './factory';\nexport { createSelector } from './create-selector';\nexport { controls } from './controls';\nexport { default as createReduxStore } from './redux-store';\nexport { keyedReducer } from './redux-store/keyed-reducer';\nexport { dispatch } from './dispatch';\nexport { select } from './select';\n\nexport type * from './types';\n\n/**\n * Object of available plugins to use with a registry.\n *\n * @see [use](#use)\n */\nexport { plugins };\n\n/**\n * The combineReducers helper function turns an object whose values are different\n * reducing functions into a single reducing function you can pass to registerReducer.\n *\n * @type {import('./types').combineReducers}\n * @param {Object} reducers An object whose values correspond to different reducing\n * functions that need to be combined into one.\n *\n * @example\n * ```js\n * import { combineReducers, createReduxStore, register } from '@wordpress/data';\n *\n * const prices = ( state = {}, action ) => {\n * \treturn action.type === 'SET_PRICE' ?\n * \t\t{\n * \t\t\t...state,\n * \t\t\t[ action.item ]: action.price,\n * \t\t} :\n * \t\tstate;\n * };\n *\n * const discountPercent = ( state = 0, action ) => {\n * \treturn action.type === 'START_SALE' ?\n * \t\taction.discountPercent :\n * \t\tstate;\n * };\n *\n * const store = createReduxStore( 'my-shop', {\n * \treducer: combineReducers( {\n * \t\tprices,\n * \t\tdiscountPercent,\n * \t} ),\n * } );\n * register( store );\n * ```\n *\n * @return {Function} A reducer that invokes every reducer inside the reducers\n * object, and constructs a state object with the same shape.\n */\nexport const combineReducers =\n\tcombineReducersModule as unknown as CombineReducers;\n\n/**\n * Given a store descriptor, returns an object containing the store's selectors\n * pre-bound to state so that you only need to supply additional arguments, and\n * modified so that they return promises that resolve to their eventual values,\n * after any resolvers have ran.\n *\n * @param {StoreDescriptor|string} storeNameOrDescriptor The store descriptor. The legacy calling\n * convention of passing the store name is\n * also supported.\n *\n * @example\n * ```js\n * import { resolveSelect } from '@wordpress/data';\n * import { store as myCustomStore } from 'my-custom-store';\n *\n * resolveSelect( myCustomStore ).getPrice( 'hammer' ).then(console.log)\n * ```\n *\n * @return Object containing the store's promise-wrapped selectors.\n */\nexport function resolveSelect< T extends StoreDescriptor< AnyConfig > >(\n\tstoreNameOrDescriptor: T | string\n): CurriedSelectorsResolveOf< T > {\n\treturn defaultRegistry.resolveSelect(\n\t\tstoreNameOrDescriptor\n\t) as CurriedSelectorsResolveOf< T >;\n}\n\n/**\n * Given a store descriptor, returns an object containing the store's selectors pre-bound to state\n * so that you only need to supply additional arguments, and modified so that they throw promises\n * in case the selector is not resolved yet.\n *\n * @param {StoreDescriptor|string} storeNameOrDescriptor The store descriptor. The legacy calling\n * convention of passing the store name is\n * also supported.\n *\n * @return {Object} Object containing the store's suspense-wrapped selectors.\n */\nexport const suspendSelect = (\n\tstoreNameOrDescriptor:\n\t\t| string\n\t\t| StoreDescriptor< ReduxStoreConfig< any, any, any > >\n): any => defaultRegistry.suspendSelect( storeNameOrDescriptor );\n\n/**\n * Given a listener function, the function will be called any time the state value\n * of one of the registered stores has changed. If you specify the optional\n * `storeNameOrDescriptor` parameter, the listener function will be called only\n * on updates on that one specific registered store.\n *\n * This function returns an `unsubscribe` function used to stop the subscription.\n *\n * @param {Function} listener Callback function.\n * @param {string|StoreDescriptor?} storeNameOrDescriptor Optional store name.\n *\n * @example\n * ```js\n * import { subscribe } from '@wordpress/data';\n *\n * const unsubscribe = subscribe( () => {\n * \t// You could use this opportunity to test whether the derived result of a\n * \t// selector has subsequently changed as the result of a state update.\n * } );\n *\n * // Later, if necessary...\n * unsubscribe();\n * ```\n */\nexport const subscribe = (\n\tlistener: () => void,\n\tstoreNameOrDescriptor?:\n\t\t| string\n\t\t| StoreDescriptor< ReduxStoreConfig< any, any, any > >\n): ( () => void ) =>\n\tdefaultRegistry.subscribe( listener, storeNameOrDescriptor );\n\n/**\n * Registers a generic store instance.\n *\n * @deprecated Use `register( storeDescriptor )` instead.\n *\n * @param {string} name Store registry name.\n * @param {Object} store Store instance (`{ getSelectors, getActions, subscribe }`).\n */\nexport const registerGenericStore: Function =\n\tdefaultRegistry.registerGenericStore;\n\n/**\n * Registers a standard `@wordpress/data` store.\n *\n * @deprecated Use `register` instead.\n *\n * @param {string} storeName Unique namespace identifier for the store.\n * @param {Object} options Store description (reducer, actions, selectors, resolvers).\n *\n * @return {Object} Registered store object.\n */\nexport const registerStore: Function = defaultRegistry.registerStore;\n\n/**\n * Extends a registry to inherit functionality provided by a given plugin. A\n * plugin is an object with properties aligning to that of a registry, merged\n * to extend the default registry behavior.\n *\n * @param {Object} plugin Plugin object.\n */\nexport const use: any = defaultRegistry.use;\n\n/**\n * Registers a standard `@wordpress/data` store descriptor.\n *\n * @example\n * ```js\n * import { createReduxStore, register } from '@wordpress/data';\n *\n * const store = createReduxStore( 'demo', {\n * reducer: ( state = 'OK' ) => state,\n * selectors: {\n * getValue: ( state ) => state,\n * },\n * } );\n * register( store );\n * ```\n *\n * @param {StoreDescriptor} store Store descriptor.\n */\nexport const register = (\n\tstore: StoreDescriptor< ReduxStoreConfig< any, any, any > >\n): void => defaultRegistry.register( store );\n"],
5
+ "mappings": ";AAGA,OAAO,qBAAqB;AAC5B,YAAY,aAAa;AACzB,SAAS,mBAAmB,6BAA6B;AAUzD,SAAoB,WAAXA,gBAA6B;AACtC,SAAoB,WAAXA,gBAA+B;AACxC,SAAoB,WAAXA,gBAA+B;AACxC;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP;AAAA,EACY,WAAXA;AAAA,EACA;AAAA,OACM;AACP,SAAS,mBAAmB;AAC5B,SAAS,yBAAyB;AAClC,SAAS,sBAAsB;AAC/B,SAAS,wBAAwB,6BAA6B;AAC9D,SAAS,sBAAsB;AAC/B,SAAS,gBAAgB;AACzB,SAAoB,WAAXA,gBAAmC;AAC5C,SAAS,oBAAoB;AAC7B,SAAS,gBAAgB;AACzB,SAAS,cAAc;AAkDhB,IAAM,kBACZ;AAsBM,SAAS,cACf,uBACiC;AACjC,SAAO,gBAAgB;AAAA,IACtB;AAAA,EACD;AACD;AAaO,IAAM,gBAAgB,CAC5B,0BAGS,gBAAgB,cAAe,qBAAsB;AA0BxD,IAAM,YAAY,CACxB,UACA,0BAIA,gBAAgB,UAAW,UAAU,qBAAsB;AAUrD,IAAM,uBACZ,gBAAgB;AAYV,IAAM,gBAA0B,gBAAgB;AAShD,IAAM,MAAW,gBAAgB;AAoBjC,IAAM,WAAW,CACvB,UACU,gBAAgB,SAAU,KAAM;",
6
6
  "names": ["default"]
7
7
  }
@@ -0,0 +1,19 @@
1
+ // packages/data/src/redux-store/keyed-reducer.ts
2
+ var keyedReducer = (actionProperty) => (reducer) => (state = {}, action) => {
3
+ const key = action[actionProperty];
4
+ if (key === void 0) {
5
+ return state;
6
+ }
7
+ const nextKeyState = reducer(state[key], action);
8
+ if (nextKeyState === state[key]) {
9
+ return state;
10
+ }
11
+ return {
12
+ ...state,
13
+ [key]: nextKeyState
14
+ };
15
+ };
16
+ export {
17
+ keyedReducer
18
+ };
19
+ //# sourceMappingURL=keyed-reducer.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/redux-store/keyed-reducer.ts"],
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport type { AnyAction, Reducer } from 'redux';\n\n/**\n * Higher-order reducer creator which creates a combined reducer object, keyed\n * by a property on the action object.\n *\n * @param actionProperty Action property by which to key object.\n * @return Higher-order reducer.\n *\n * @example\n * ```js\n * import { keyedReducer } from '@wordpress/data';\n *\n * const itemsByContext = keyedReducer( 'context' )( ( state = [], action ) => {\n * switch ( action.type ) {\n * case 'ADD_ITEM':\n * return [ ...state, action.item ];\n * }\n * return state;\n * } );\n * ```\n */\nexport const keyedReducer =\n\t< TState extends unknown, TAction extends AnyAction >(\n\t\tactionProperty: string\n\t) =>\n\t(\n\t\treducer: Reducer< TState, TAction >\n\t): Reducer< Record< string, TState >, TAction > =>\n\t( state: Record< string, TState > = {}, action ) => {\n\t\t// Retrieve subkey from action. Do not track if undefined; useful for cases\n\t\t// where reducer is scoped by action shape.\n\t\tconst key = action[ actionProperty ];\n\t\tif ( key === undefined ) {\n\t\t\treturn state;\n\t\t}\n\n\t\t// Avoid updating state if unchanged. Note that this also accounts for a\n\t\t// reducer which returns undefined on a key which is not yet tracked.\n\t\tconst nextKeyState = reducer( state[ key ], action );\n\t\tif ( nextKeyState === state[ key ] ) {\n\t\t\treturn state;\n\t\t}\n\n\t\treturn {\n\t\t\t...state,\n\t\t\t[ key ]: nextKeyState,\n\t\t};\n\t};\n"],
5
+ "mappings": ";AAyBO,IAAM,eACZ,CACC,mBAED,CACC,YAED,CAAE,QAAkC,CAAC,GAAG,WAAY;AAGnD,QAAM,MAAM,OAAQ,cAAe;AACnC,MAAK,QAAQ,QAAY;AACxB,WAAO;AAAA,EACR;AAIA,QAAM,eAAe,QAAS,MAAO,GAAI,GAAG,MAAO;AACnD,MAAK,iBAAiB,MAAO,GAAI,GAAI;AACpC,WAAO;AAAA,EACR;AAEA,SAAO;AAAA,IACN,GAAG;AAAA,IACH,CAAE,GAAI,GAAG;AAAA,EACV;AACD;",
6
+ "names": []
7
+ }
@@ -1,7 +1,8 @@
1
1
  // packages/data/src/redux-store/metadata/reducer.ts
2
2
  import EquivalentKeyMap from "equivalent-key-map";
3
- import { selectorArgsToStateKey, onSubKey } from "./utils.mjs";
4
- var subKeysIsResolved = onSubKey("selectorName")((state = new EquivalentKeyMap(), action) => {
3
+ import { keyedReducer } from "../keyed-reducer.mjs";
4
+ import { selectorArgsToStateKey } from "./utils.mjs";
5
+ var subKeysIsResolved = keyedReducer("selectorName")((state = new EquivalentKeyMap(), action) => {
5
6
  switch (action.type) {
6
7
  case "START_RESOLUTION": {
7
8
  const nextState = new EquivalentKeyMap(state);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/redux-store/metadata/reducer.ts"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport EquivalentKeyMap from 'equivalent-key-map';\nimport type { Reducer } from 'redux';\n\nimport type {\n\tstartResolution,\n\tfinishResolution,\n\tfailResolution,\n\tstartResolutions,\n\tfinishResolutions,\n\tfailResolutions,\n\tinvalidateResolution,\n\tinvalidateResolutionForStore,\n\tinvalidateResolutionForStoreSelector,\n} from './actions';\n\n/**\n * Internal dependencies\n */\nimport { selectorArgsToStateKey, onSubKey } from './utils';\n\ntype Action =\n\t| ReturnType< typeof startResolution >\n\t| ReturnType< typeof finishResolution >\n\t| ReturnType< typeof failResolution >\n\t| ReturnType< typeof startResolutions >\n\t| ReturnType< typeof finishResolutions >\n\t| ReturnType< typeof failResolutions >\n\t| ReturnType< typeof invalidateResolution >\n\t| ReturnType< typeof invalidateResolutionForStore >\n\t| ReturnType< typeof invalidateResolutionForStoreSelector >;\n\ntype StateKey = unknown[] | unknown;\nexport type StateValue =\n\t| { status: 'resolving' | 'finished' }\n\t| { status: 'error'; error: Error | unknown };\n\nexport type Status = StateValue[ 'status' ];\nexport type State = EquivalentKeyMap< StateKey, StateValue >;\n\n/**\n * Reducer function returning next state for selector resolution of\n * subkeys, object form:\n *\n * selectorName -> EquivalentKeyMap<Array,boolean>\n */\nconst subKeysIsResolved: Reducer< Record< string, State >, Action > = onSubKey<\n\tState,\n\tAction\n>( 'selectorName' )( ( state = new EquivalentKeyMap(), action: Action ) => {\n\tswitch ( action.type ) {\n\t\tcase 'START_RESOLUTION': {\n\t\t\tconst nextState = new EquivalentKeyMap( state );\n\t\t\tnextState.set( selectorArgsToStateKey( action.args ), {\n\t\t\t\tstatus: 'resolving',\n\t\t\t} );\n\t\t\treturn nextState;\n\t\t}\n\t\tcase 'FINISH_RESOLUTION': {\n\t\t\tconst nextState = new EquivalentKeyMap( state );\n\t\t\tnextState.set( selectorArgsToStateKey( action.args ), {\n\t\t\t\tstatus: 'finished',\n\t\t\t} );\n\t\t\treturn nextState;\n\t\t}\n\t\tcase 'FAIL_RESOLUTION': {\n\t\t\tconst nextState = new EquivalentKeyMap( state );\n\t\t\tnextState.set( selectorArgsToStateKey( action.args ), {\n\t\t\t\tstatus: 'error',\n\t\t\t\terror: action.error,\n\t\t\t} );\n\t\t\treturn nextState;\n\t\t}\n\t\tcase 'START_RESOLUTIONS': {\n\t\t\tconst nextState = new EquivalentKeyMap( state );\n\t\t\tfor ( const resolutionArgs of action.args ) {\n\t\t\t\tnextState.set( selectorArgsToStateKey( resolutionArgs ), {\n\t\t\t\t\tstatus: 'resolving',\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn nextState;\n\t\t}\n\t\tcase 'FINISH_RESOLUTIONS': {\n\t\t\tconst nextState = new EquivalentKeyMap( state );\n\t\t\tfor ( const resolutionArgs of action.args ) {\n\t\t\t\tnextState.set( selectorArgsToStateKey( resolutionArgs ), {\n\t\t\t\t\tstatus: 'finished',\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn nextState;\n\t\t}\n\t\tcase 'FAIL_RESOLUTIONS': {\n\t\t\tconst nextState = new EquivalentKeyMap( state );\n\t\t\taction.args.forEach( ( resolutionArgs, idx ) => {\n\t\t\t\tconst resolutionState: StateValue = {\n\t\t\t\t\tstatus: 'error',\n\t\t\t\t\terror: undefined,\n\t\t\t\t};\n\n\t\t\t\tconst error = action.errors[ idx ];\n\t\t\t\tif ( error ) {\n\t\t\t\t\tresolutionState.error = error;\n\t\t\t\t}\n\n\t\t\t\tnextState.set(\n\t\t\t\t\tselectorArgsToStateKey( resolutionArgs as unknown[] ),\n\t\t\t\t\tresolutionState\n\t\t\t\t);\n\t\t\t} );\n\t\t\treturn nextState;\n\t\t}\n\t\tcase 'INVALIDATE_RESOLUTION': {\n\t\t\tconst nextState = new EquivalentKeyMap( state );\n\t\t\tnextState.delete( selectorArgsToStateKey( action.args ) );\n\t\t\treturn nextState;\n\t\t}\n\t}\n\treturn state;\n} );\n\n/**\n * Reducer function returning next state for selector resolution, object form:\n *\n * selectorName -> EquivalentKeyMap<Array, boolean>\n *\n * @param state Current state.\n * @param action Dispatched action.\n *\n * @return Next state.\n */\nconst isResolved = ( state: Record< string, State > = {}, action: Action ) => {\n\tswitch ( action.type ) {\n\t\tcase 'INVALIDATE_RESOLUTION_FOR_STORE':\n\t\t\treturn {};\n\t\tcase 'INVALIDATE_RESOLUTION_FOR_STORE_SELECTOR': {\n\t\t\tif ( action.selectorName in state ) {\n\t\t\t\tconst {\n\t\t\t\t\t[ action.selectorName ]: removedSelector,\n\t\t\t\t\t...restState\n\t\t\t\t} = state;\n\t\t\t\treturn restState;\n\t\t\t}\n\t\t\treturn state;\n\t\t}\n\t\tcase 'START_RESOLUTION':\n\t\tcase 'FINISH_RESOLUTION':\n\t\tcase 'FAIL_RESOLUTION':\n\t\tcase 'START_RESOLUTIONS':\n\t\tcase 'FINISH_RESOLUTIONS':\n\t\tcase 'FAIL_RESOLUTIONS':\n\t\tcase 'INVALIDATE_RESOLUTION':\n\t\t\treturn subKeysIsResolved( state, action );\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\nexport default isResolved;\n"],
5
- "mappings": ";AAGA,OAAO,sBAAsB;AAkB7B,SAAS,wBAAwB,gBAAgB;AA2BjD,IAAM,oBAAgE,SAGnE,cAAe,EAAG,CAAE,QAAQ,IAAI,iBAAiB,GAAG,WAAoB;AAC1E,UAAS,OAAO,MAAO;AAAA,IACtB,KAAK,oBAAoB;AACxB,YAAM,YAAY,IAAI,iBAAkB,KAAM;AAC9C,gBAAU,IAAK,uBAAwB,OAAO,IAAK,GAAG;AAAA,QACrD,QAAQ;AAAA,MACT,CAAE;AACF,aAAO;AAAA,IACR;AAAA,IACA,KAAK,qBAAqB;AACzB,YAAM,YAAY,IAAI,iBAAkB,KAAM;AAC9C,gBAAU,IAAK,uBAAwB,OAAO,IAAK,GAAG;AAAA,QACrD,QAAQ;AAAA,MACT,CAAE;AACF,aAAO;AAAA,IACR;AAAA,IACA,KAAK,mBAAmB;AACvB,YAAM,YAAY,IAAI,iBAAkB,KAAM;AAC9C,gBAAU,IAAK,uBAAwB,OAAO,IAAK,GAAG;AAAA,QACrD,QAAQ;AAAA,QACR,OAAO,OAAO;AAAA,MACf,CAAE;AACF,aAAO;AAAA,IACR;AAAA,IACA,KAAK,qBAAqB;AACzB,YAAM,YAAY,IAAI,iBAAkB,KAAM;AAC9C,iBAAY,kBAAkB,OAAO,MAAO;AAC3C,kBAAU,IAAK,uBAAwB,cAAe,GAAG;AAAA,UACxD,QAAQ;AAAA,QACT,CAAE;AAAA,MACH;AACA,aAAO;AAAA,IACR;AAAA,IACA,KAAK,sBAAsB;AAC1B,YAAM,YAAY,IAAI,iBAAkB,KAAM;AAC9C,iBAAY,kBAAkB,OAAO,MAAO;AAC3C,kBAAU,IAAK,uBAAwB,cAAe,GAAG;AAAA,UACxD,QAAQ;AAAA,QACT,CAAE;AAAA,MACH;AACA,aAAO;AAAA,IACR;AAAA,IACA,KAAK,oBAAoB;AACxB,YAAM,YAAY,IAAI,iBAAkB,KAAM;AAC9C,aAAO,KAAK,QAAS,CAAE,gBAAgB,QAAS;AAC/C,cAAM,kBAA8B;AAAA,UACnC,QAAQ;AAAA,UACR,OAAO;AAAA,QACR;AAEA,cAAM,QAAQ,OAAO,OAAQ,GAAI;AACjC,YAAK,OAAQ;AACZ,0BAAgB,QAAQ;AAAA,QACzB;AAEA,kBAAU;AAAA,UACT,uBAAwB,cAA4B;AAAA,UACpD;AAAA,QACD;AAAA,MACD,CAAE;AACF,aAAO;AAAA,IACR;AAAA,IACA,KAAK,yBAAyB;AAC7B,YAAM,YAAY,IAAI,iBAAkB,KAAM;AAC9C,gBAAU,OAAQ,uBAAwB,OAAO,IAAK,CAAE;AACxD,aAAO;AAAA,IACR;AAAA,EACD;AACA,SAAO;AACR,CAAE;AAYF,IAAM,aAAa,CAAE,QAAiC,CAAC,GAAG,WAAoB;AAC7E,UAAS,OAAO,MAAO;AAAA,IACtB,KAAK;AACJ,aAAO,CAAC;AAAA,IACT,KAAK,4CAA4C;AAChD,UAAK,OAAO,gBAAgB,OAAQ;AACnC,cAAM;AAAA,UACL,CAAE,OAAO,YAAa,GAAG;AAAA,UACzB,GAAG;AAAA,QACJ,IAAI;AACJ,eAAO;AAAA,MACR;AACA,aAAO;AAAA,IACR;AAAA,IACA,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACJ,aAAO,kBAAmB,OAAO,MAAO;AAAA,IACzC;AACC,aAAO;AAAA,EACT;AACD;AAEA,IAAO,kBAAQ;",
4
+ "sourcesContent": ["/**\n * External dependencies\n */\nimport EquivalentKeyMap from 'equivalent-key-map';\nimport type { Reducer } from 'redux';\n\nimport type {\n\tstartResolution,\n\tfinishResolution,\n\tfailResolution,\n\tstartResolutions,\n\tfinishResolutions,\n\tfailResolutions,\n\tinvalidateResolution,\n\tinvalidateResolutionForStore,\n\tinvalidateResolutionForStoreSelector,\n} from './actions';\n\n/**\n * Internal dependencies\n */\nimport { keyedReducer } from '../keyed-reducer';\nimport { selectorArgsToStateKey } from './utils';\n\ntype Action =\n\t| ReturnType< typeof startResolution >\n\t| ReturnType< typeof finishResolution >\n\t| ReturnType< typeof failResolution >\n\t| ReturnType< typeof startResolutions >\n\t| ReturnType< typeof finishResolutions >\n\t| ReturnType< typeof failResolutions >\n\t| ReturnType< typeof invalidateResolution >\n\t| ReturnType< typeof invalidateResolutionForStore >\n\t| ReturnType< typeof invalidateResolutionForStoreSelector >;\n\ntype StateKey = unknown[] | unknown;\nexport type StateValue =\n\t| { status: 'resolving' | 'finished' }\n\t| { status: 'error'; error: Error | unknown };\n\nexport type Status = StateValue[ 'status' ];\nexport type State = EquivalentKeyMap< StateKey, StateValue >;\n\n/**\n * Reducer function returning next state for selector resolution of\n * subkeys, object form:\n *\n * selectorName -> EquivalentKeyMap<Array,boolean>\n */\nconst subKeysIsResolved: Reducer<\n\tRecord< string, State >,\n\tAction\n> = keyedReducer< State, Action >( 'selectorName' )( (\n\tstate = new EquivalentKeyMap(),\n\taction: Action\n) => {\n\tswitch ( action.type ) {\n\t\tcase 'START_RESOLUTION': {\n\t\t\tconst nextState = new EquivalentKeyMap( state );\n\t\t\tnextState.set( selectorArgsToStateKey( action.args ), {\n\t\t\t\tstatus: 'resolving',\n\t\t\t} );\n\t\t\treturn nextState;\n\t\t}\n\t\tcase 'FINISH_RESOLUTION': {\n\t\t\tconst nextState = new EquivalentKeyMap( state );\n\t\t\tnextState.set( selectorArgsToStateKey( action.args ), {\n\t\t\t\tstatus: 'finished',\n\t\t\t} );\n\t\t\treturn nextState;\n\t\t}\n\t\tcase 'FAIL_RESOLUTION': {\n\t\t\tconst nextState = new EquivalentKeyMap( state );\n\t\t\tnextState.set( selectorArgsToStateKey( action.args ), {\n\t\t\t\tstatus: 'error',\n\t\t\t\terror: action.error,\n\t\t\t} );\n\t\t\treturn nextState;\n\t\t}\n\t\tcase 'START_RESOLUTIONS': {\n\t\t\tconst nextState = new EquivalentKeyMap( state );\n\t\t\tfor ( const resolutionArgs of action.args ) {\n\t\t\t\tnextState.set( selectorArgsToStateKey( resolutionArgs ), {\n\t\t\t\t\tstatus: 'resolving',\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn nextState;\n\t\t}\n\t\tcase 'FINISH_RESOLUTIONS': {\n\t\t\tconst nextState = new EquivalentKeyMap( state );\n\t\t\tfor ( const resolutionArgs of action.args ) {\n\t\t\t\tnextState.set( selectorArgsToStateKey( resolutionArgs ), {\n\t\t\t\t\tstatus: 'finished',\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn nextState;\n\t\t}\n\t\tcase 'FAIL_RESOLUTIONS': {\n\t\t\tconst nextState = new EquivalentKeyMap( state );\n\t\t\taction.args.forEach( ( resolutionArgs, idx ) => {\n\t\t\t\tconst resolutionState: StateValue = {\n\t\t\t\t\tstatus: 'error',\n\t\t\t\t\terror: undefined,\n\t\t\t\t};\n\n\t\t\t\tconst error = action.errors[ idx ];\n\t\t\t\tif ( error ) {\n\t\t\t\t\tresolutionState.error = error;\n\t\t\t\t}\n\n\t\t\t\tnextState.set(\n\t\t\t\t\tselectorArgsToStateKey( resolutionArgs as unknown[] ),\n\t\t\t\t\tresolutionState\n\t\t\t\t);\n\t\t\t} );\n\t\t\treturn nextState;\n\t\t}\n\t\tcase 'INVALIDATE_RESOLUTION': {\n\t\t\tconst nextState = new EquivalentKeyMap( state );\n\t\t\tnextState.delete( selectorArgsToStateKey( action.args ) );\n\t\t\treturn nextState;\n\t\t}\n\t}\n\treturn state;\n} );\n\n/**\n * Reducer function returning next state for selector resolution, object form:\n *\n * selectorName -> EquivalentKeyMap<Array, boolean>\n *\n * @param state Current state.\n * @param action Dispatched action.\n *\n * @return Next state.\n */\nconst isResolved = ( state: Record< string, State > = {}, action: Action ) => {\n\tswitch ( action.type ) {\n\t\tcase 'INVALIDATE_RESOLUTION_FOR_STORE':\n\t\t\treturn {};\n\t\tcase 'INVALIDATE_RESOLUTION_FOR_STORE_SELECTOR': {\n\t\t\tif ( action.selectorName in state ) {\n\t\t\t\tconst {\n\t\t\t\t\t[ action.selectorName ]: removedSelector,\n\t\t\t\t\t...restState\n\t\t\t\t} = state;\n\t\t\t\treturn restState;\n\t\t\t}\n\t\t\treturn state;\n\t\t}\n\t\tcase 'START_RESOLUTION':\n\t\tcase 'FINISH_RESOLUTION':\n\t\tcase 'FAIL_RESOLUTION':\n\t\tcase 'START_RESOLUTIONS':\n\t\tcase 'FINISH_RESOLUTIONS':\n\t\tcase 'FAIL_RESOLUTIONS':\n\t\tcase 'INVALIDATE_RESOLUTION':\n\t\t\treturn subKeysIsResolved( state, action );\n\t\tdefault:\n\t\t\treturn state;\n\t}\n};\n\nexport default isResolved;\n"],
5
+ "mappings": ";AAGA,OAAO,sBAAsB;AAkB7B,SAAS,oBAAoB;AAC7B,SAAS,8BAA8B;AA2BvC,IAAM,oBAGF,aAA+B,cAAe,EAAG,CACpD,QAAQ,IAAI,iBAAiB,GAC7B,WACI;AACJ,UAAS,OAAO,MAAO;AAAA,IACtB,KAAK,oBAAoB;AACxB,YAAM,YAAY,IAAI,iBAAkB,KAAM;AAC9C,gBAAU,IAAK,uBAAwB,OAAO,IAAK,GAAG;AAAA,QACrD,QAAQ;AAAA,MACT,CAAE;AACF,aAAO;AAAA,IACR;AAAA,IACA,KAAK,qBAAqB;AACzB,YAAM,YAAY,IAAI,iBAAkB,KAAM;AAC9C,gBAAU,IAAK,uBAAwB,OAAO,IAAK,GAAG;AAAA,QACrD,QAAQ;AAAA,MACT,CAAE;AACF,aAAO;AAAA,IACR;AAAA,IACA,KAAK,mBAAmB;AACvB,YAAM,YAAY,IAAI,iBAAkB,KAAM;AAC9C,gBAAU,IAAK,uBAAwB,OAAO,IAAK,GAAG;AAAA,QACrD,QAAQ;AAAA,QACR,OAAO,OAAO;AAAA,MACf,CAAE;AACF,aAAO;AAAA,IACR;AAAA,IACA,KAAK,qBAAqB;AACzB,YAAM,YAAY,IAAI,iBAAkB,KAAM;AAC9C,iBAAY,kBAAkB,OAAO,MAAO;AAC3C,kBAAU,IAAK,uBAAwB,cAAe,GAAG;AAAA,UACxD,QAAQ;AAAA,QACT,CAAE;AAAA,MACH;AACA,aAAO;AAAA,IACR;AAAA,IACA,KAAK,sBAAsB;AAC1B,YAAM,YAAY,IAAI,iBAAkB,KAAM;AAC9C,iBAAY,kBAAkB,OAAO,MAAO;AAC3C,kBAAU,IAAK,uBAAwB,cAAe,GAAG;AAAA,UACxD,QAAQ;AAAA,QACT,CAAE;AAAA,MACH;AACA,aAAO;AAAA,IACR;AAAA,IACA,KAAK,oBAAoB;AACxB,YAAM,YAAY,IAAI,iBAAkB,KAAM;AAC9C,aAAO,KAAK,QAAS,CAAE,gBAAgB,QAAS;AAC/C,cAAM,kBAA8B;AAAA,UACnC,QAAQ;AAAA,UACR,OAAO;AAAA,QACR;AAEA,cAAM,QAAQ,OAAO,OAAQ,GAAI;AACjC,YAAK,OAAQ;AACZ,0BAAgB,QAAQ;AAAA,QACzB;AAEA,kBAAU;AAAA,UACT,uBAAwB,cAA4B;AAAA,UACpD;AAAA,QACD;AAAA,MACD,CAAE;AACF,aAAO;AAAA,IACR;AAAA,IACA,KAAK,yBAAyB;AAC7B,YAAM,YAAY,IAAI,iBAAkB,KAAM;AAC9C,gBAAU,OAAQ,uBAAwB,OAAO,IAAK,CAAE;AACxD,aAAO;AAAA,IACR;AAAA,EACD;AACA,SAAO;AACR,CAAE;AAYF,IAAM,aAAa,CAAE,QAAiC,CAAC,GAAG,WAAoB;AAC7E,UAAS,OAAO,MAAO;AAAA,IACtB,KAAK;AACJ,aAAO,CAAC;AAAA,IACT,KAAK,4CAA4C;AAChD,UAAK,OAAO,gBAAgB,OAAQ;AACnC,cAAM;AAAA,UACL,CAAE,OAAO,YAAa,GAAG;AAAA,UACzB,GAAG;AAAA,QACJ,IAAI;AACJ,eAAO;AAAA,MACR;AACA,aAAO;AAAA,IACR;AAAA,IACA,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACJ,aAAO,kBAAmB,OAAO,MAAO;AAAA,IACzC;AACC,aAAO;AAAA,EACT;AACD;AAEA,IAAO,kBAAQ;",
6
6
  "names": []
7
7
  }
@@ -1,18 +1,4 @@
1
1
  // packages/data/src/redux-store/metadata/utils.ts
2
- var onSubKey = (actionProperty) => (reducer) => (state = {}, action) => {
3
- const key = action[actionProperty];
4
- if (key === void 0) {
5
- return state;
6
- }
7
- const nextKeyState = reducer(state[key], action);
8
- if (nextKeyState === state[key]) {
9
- return state;
10
- }
11
- return {
12
- ...state,
13
- [key]: nextKeyState
14
- };
15
- };
16
2
  function selectorArgsToStateKey(args) {
17
3
  if (args === void 0 || args === null) {
18
4
  return [];
@@ -25,7 +11,6 @@ function selectorArgsToStateKey(args) {
25
11
  return idx === len ? args : args.slice(0, idx);
26
12
  }
27
13
  export {
28
- onSubKey,
29
14
  selectorArgsToStateKey
30
15
  };
31
16
  //# sourceMappingURL=utils.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/redux-store/metadata/utils.ts"],
4
- "sourcesContent": ["/**\n * External dependencies\n */\nimport type { AnyAction, Reducer } from 'redux';\n\n/**\n * Higher-order reducer creator which creates a combined reducer object, keyed\n * by a property on the action object.\n *\n * @param actionProperty Action property by which to key object.\n * @return Higher-order reducer.\n */\nexport const onSubKey =\n\t< TState extends unknown, TAction extends AnyAction >(\n\t\tactionProperty: string\n\t) =>\n\t(\n\t\treducer: Reducer< TState, TAction >\n\t): Reducer< Record< string, TState >, TAction > =>\n\t( state: Record< string, TState > = {}, action ) => {\n\t\t// Retrieve subkey from action. Do not track if undefined; useful for cases\n\t\t// where reducer is scoped by action shape.\n\t\tconst key = action[ actionProperty ];\n\t\tif ( key === undefined ) {\n\t\t\treturn state;\n\t\t}\n\n\t\t// Avoid updating state if unchanged. Note that this also accounts for a\n\t\t// reducer which returns undefined on a key which is not yet tracked.\n\t\tconst nextKeyState = reducer( state[ key ], action );\n\t\tif ( nextKeyState === state[ key ] ) {\n\t\t\treturn state;\n\t\t}\n\n\t\treturn {\n\t\t\t...state,\n\t\t\t[ key ]: nextKeyState,\n\t\t};\n\t};\n\n/**\n * Normalize selector argument array by defaulting `undefined` value to an empty array\n * and removing trailing `undefined` values.\n *\n * @param args Selector argument array\n * @return Normalized state key array\n */\nexport function selectorArgsToStateKey( args: unknown[] | null | undefined ) {\n\tif ( args === undefined || args === null ) {\n\t\treturn [];\n\t}\n\n\tconst len = args.length;\n\tlet idx = len;\n\twhile ( idx > 0 && args[ idx - 1 ] === undefined ) {\n\t\tidx--;\n\t}\n\treturn idx === len ? args : args.slice( 0, idx );\n}\n"],
5
- "mappings": ";AAYO,IAAM,WACZ,CACC,mBAED,CACC,YAED,CAAE,QAAkC,CAAC,GAAG,WAAY;AAGnD,QAAM,MAAM,OAAQ,cAAe;AACnC,MAAK,QAAQ,QAAY;AACxB,WAAO;AAAA,EACR;AAIA,QAAM,eAAe,QAAS,MAAO,GAAI,GAAG,MAAO;AACnD,MAAK,iBAAiB,MAAO,GAAI,GAAI;AACpC,WAAO;AAAA,EACR;AAEA,SAAO;AAAA,IACN,GAAG;AAAA,IACH,CAAE,GAAI,GAAG;AAAA,EACV;AACD;AASM,SAAS,uBAAwB,MAAqC;AAC5E,MAAK,SAAS,UAAa,SAAS,MAAO;AAC1C,WAAO,CAAC;AAAA,EACT;AAEA,QAAM,MAAM,KAAK;AACjB,MAAI,MAAM;AACV,SAAQ,MAAM,KAAK,KAAM,MAAM,CAAE,MAAM,QAAY;AAClD;AAAA,EACD;AACA,SAAO,QAAQ,MAAM,OAAO,KAAK,MAAO,GAAG,GAAI;AAChD;",
4
+ "sourcesContent": ["/**\n * Normalize selector argument array by defaulting `undefined` value to an empty array\n * and removing trailing `undefined` values.\n *\n * @param args Selector argument array\n * @return Normalized state key array\n */\nexport function selectorArgsToStateKey( args: unknown[] | null | undefined ) {\n\tif ( args === undefined || args === null ) {\n\t\treturn [];\n\t}\n\n\tconst len = args.length;\n\tlet idx = len;\n\twhile ( idx > 0 && args[ idx - 1 ] === undefined ) {\n\t\tidx--;\n\t}\n\treturn idx === len ? args : args.slice( 0, idx );\n}\n"],
5
+ "mappings": ";AAOO,SAAS,uBAAwB,MAAqC;AAC5E,MAAK,SAAS,UAAa,SAAS,MAAO;AAC1C,WAAO,CAAC;AAAA,EACT;AAEA,QAAM,MAAM,KAAK;AACjB,MAAI,MAAM;AACV,SAAQ,MAAM,KAAK,KAAM,MAAM,CAAE,MAAM,QAAY;AAClD;AAAA,EACD;AACA,SAAO,QAAQ,MAAM,OAAO,KAAK,MAAO,GAAG,GAAI;AAChD;",
6
6
  "names": []
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/use-select/index.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EACX,SAAS,EAET,eAAe,EACf,SAAS,EACT,eAAe,EAEf,MAAM,aAAa,CAAC;AAsOrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAChC,CAAC,SAAS,SAAS,GAAG,eAAe,CAAE,SAAS,CAAE,EAChD,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,GAAI,eAAe,CAAE,CAAC,CAAE,CAsBxD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAE,CAAC,SAAS,SAAS,EACrD,SAAS,EAAE,CAAC,EACZ,IAAI,EAAE,OAAO,EAAE,GACb,UAAU,CAAE,CAAC,CAAE,CAEjB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/use-select/index.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EACX,SAAS,EAET,eAAe,EACf,SAAS,EACT,eAAe,EAEf,MAAM,aAAa,CAAC;AAsOrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAChC,CAAC,SAAS,SAAS,GAAG,eAAe,CAAE,SAAS,CAAE,EAChD,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,GAAI,eAAe,CAAE,CAAC,CAAE,CAsBxD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAE,CAAC,SAAS,SAAS,EACrD,SAAS,EAAE,CAAC,EACZ,IAAI,EAAE,OAAO,EAAE,GACb,UAAU,CAAE,CAAC,CAAE,CAEjB"}
@@ -12,6 +12,7 @@ export { createRegistrySelector, createRegistryControl } from './factory';
12
12
  export { createSelector } from './create-selector';
13
13
  export { controls } from './controls';
14
14
  export { default as createReduxStore } from './redux-store';
15
+ export { keyedReducer } from './redux-store/keyed-reducer';
15
16
  export { dispatch } from './dispatch';
16
17
  export { select } from './select';
17
18
  export type * from './types';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AAGrC,OAAO,KAAK,EACX,eAAe,EACf,gBAAgB,EAChB,eAAe,IAAI,eAAe,EAClC,SAAS,EACT,yBAAyB,EACzB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EACN,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,GACX,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACN,OAAO,IAAI,SAAS,EACpB,iBAAiB,GACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,mBAAmB,SAAS,CAAC;AAE7B;;;;GAIG;AACH,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,eAAO,MAAM,eAAe,EACS,eAAe,CAAC;AAErD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,aAAa,CAAE,CAAC,SAAS,eAAe,CAAE,SAAS,CAAE,EACpE,qBAAqB,EAAE,CAAC,GAAG,MAAM,GAC/B,yBAAyB,CAAE,CAAC,CAAE,CAIhC;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,GACzB,uBACG,MAAM,GACN,eAAe,CAAE,gBAAgB,CAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAE,CAAE,KACrD,GAA6D,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,SAAS,GACrB,UAAU,MAAM,IAAI,EACpB,wBACG,MAAM,GACN,eAAe,CAAE,gBAAgB,CAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAE,CAAE,KACrD,CAAE,MAAM,IAAI,CAC8C,CAAC;AAE9D;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,EAAE,QACE,CAAC;AAEtC;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,EAAE,QAAwC,CAAC;AAErE;;;;;;GAMG;AACH,eAAO,MAAM,GAAG,EAAE,GAAyB,CAAC;AAE5C;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,QAAQ,GACpB,OAAO,eAAe,CAAE,gBAAgB,CAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAE,CAAE,KACzD,IAAyC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,OAAO,MAAM,WAAW,CAAC;AAGrC,OAAO,KAAK,EACX,eAAe,EACf,gBAAgB,EAChB,eAAe,IAAI,eAAe,EAClC,SAAS,EACT,yBAAyB,EACzB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EACN,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,GACX,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACN,OAAO,IAAI,SAAS,EACpB,iBAAiB,GACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,mBAAmB,SAAS,CAAC;AAE7B;;;;GAIG;AACH,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,eAAO,MAAM,eAAe,EACS,eAAe,CAAC;AAErD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,aAAa,CAAE,CAAC,SAAS,eAAe,CAAE,SAAS,CAAE,EACpE,qBAAqB,EAAE,CAAC,GAAG,MAAM,GAC/B,yBAAyB,CAAE,CAAC,CAAE,CAIhC;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,GACzB,uBACG,MAAM,GACN,eAAe,CAAE,gBAAgB,CAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAE,CAAE,KACrD,GAA6D,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,SAAS,GACrB,UAAU,MAAM,IAAI,EACpB,wBACG,MAAM,GACN,eAAe,CAAE,gBAAgB,CAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAE,CAAE,KACrD,CAAE,MAAM,IAAI,CAC8C,CAAC;AAE9D;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,EAAE,QACE,CAAC;AAEtC;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,EAAE,QAAwC,CAAC;AAErE;;;;;;GAMG;AACH,eAAO,MAAM,GAAG,EAAE,GAAyB,CAAC;AAE5C;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,QAAQ,GACpB,OAAO,eAAe,CAAE,gBAAgB,CAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAE,CAAE,KACzD,IAAyC,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { AnyAction, Reducer } from 'redux';
5
+ /**
6
+ * Higher-order reducer creator which creates a combined reducer object, keyed
7
+ * by a property on the action object.
8
+ *
9
+ * @param actionProperty Action property by which to key object.
10
+ * @return Higher-order reducer.
11
+ *
12
+ * @example
13
+ * ```js
14
+ * import { keyedReducer } from '@wordpress/data';
15
+ *
16
+ * const itemsByContext = keyedReducer( 'context' )( ( state = [], action ) => {
17
+ * switch ( action.type ) {
18
+ * case 'ADD_ITEM':
19
+ * return [ ...state, action.item ];
20
+ * }
21
+ * return state;
22
+ * } );
23
+ * ```
24
+ */
25
+ export declare const keyedReducer: <TState extends unknown, TAction extends AnyAction>(actionProperty: string) => (reducer: Reducer<TState, TAction>) => Reducer<Record<string, TState>, TAction>;
26
+ //# sourceMappingURL=keyed-reducer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyed-reducer.d.ts","sourceRoot":"","sources":["../../src/redux-store/keyed-reducer.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,YAAY,GACtB,MAAM,SAAS,OAAO,EAAE,OAAO,SAAS,SAAS,EAClD,gBAAgB,MAAM,MAGtB,SAAS,OAAO,CAAE,MAAM,EAAE,OAAO,CAAE,KACjC,OAAO,CAAE,MAAM,CAAE,MAAM,EAAE,MAAM,CAAE,EAAE,OAAO,CAoB5C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../../src/redux-store/metadata/reducer.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAGlD,OAAO,KAAK,EACX,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,4BAA4B,EAC5B,oCAAoC,EACpC,MAAM,WAAW,CAAC;AAOnB,KAAK,MAAM,GACR,UAAU,CAAE,OAAO,eAAe,CAAE,GACpC,UAAU,CAAE,OAAO,gBAAgB,CAAE,GACrC,UAAU,CAAE,OAAO,cAAc,CAAE,GACnC,UAAU,CAAE,OAAO,gBAAgB,CAAE,GACrC,UAAU,CAAE,OAAO,iBAAiB,CAAE,GACtC,UAAU,CAAE,OAAO,eAAe,CAAE,GACpC,UAAU,CAAE,OAAO,oBAAoB,CAAE,GACzC,UAAU,CAAE,OAAO,4BAA4B,CAAE,GACjD,UAAU,CAAE,OAAO,oCAAoC,CAAE,CAAC;AAE7D,KAAK,QAAQ,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC;AACpC,MAAM,MAAM,UAAU,GACnB;IAAE,MAAM,EAAE,WAAW,GAAG,UAAU,CAAA;CAAE,GACpC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAA;CAAE,CAAC;AAE/C,MAAM,MAAM,MAAM,GAAG,UAAU,CAAE,QAAQ,CAAE,CAAC;AAC5C,MAAM,MAAM,KAAK,GAAG,gBAAgB,CAAE,QAAQ,EAAE,UAAU,CAAE,CAAC;AAkF7D;;;;;;;;;GASG;AACH,QAAA,MAAM,UAAU,GAAK,OAAO,MAAM,CAAE,MAAM,EAAE,KAAK,CAAE,YAAK,EAAE,QAAQ,MAAM,0BAyBvE,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"reducer.d.ts","sourceRoot":"","sources":["../../../src/redux-store/metadata/reducer.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAGlD,OAAO,KAAK,EACX,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,4BAA4B,EAC5B,oCAAoC,EACpC,MAAM,WAAW,CAAC;AAQnB,KAAK,MAAM,GACR,UAAU,CAAE,OAAO,eAAe,CAAE,GACpC,UAAU,CAAE,OAAO,gBAAgB,CAAE,GACrC,UAAU,CAAE,OAAO,cAAc,CAAE,GACnC,UAAU,CAAE,OAAO,gBAAgB,CAAE,GACrC,UAAU,CAAE,OAAO,iBAAiB,CAAE,GACtC,UAAU,CAAE,OAAO,eAAe,CAAE,GACpC,UAAU,CAAE,OAAO,oBAAoB,CAAE,GACzC,UAAU,CAAE,OAAO,4BAA4B,CAAE,GACjD,UAAU,CAAE,OAAO,oCAAoC,CAAE,CAAC;AAE7D,KAAK,QAAQ,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC;AACpC,MAAM,MAAM,UAAU,GACnB;IAAE,MAAM,EAAE,WAAW,GAAG,UAAU,CAAA;CAAE,GACpC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAA;CAAE,CAAC;AAE/C,MAAM,MAAM,MAAM,GAAG,UAAU,CAAE,QAAQ,CAAE,CAAC;AAC5C,MAAM,MAAM,KAAK,GAAG,gBAAgB,CAAE,QAAQ,EAAE,UAAU,CAAE,CAAC;AAqF7D;;;;;;;;;GASG;AACH,QAAA,MAAM,UAAU,GAAK,OAAO,MAAM,CAAE,MAAM,EAAE,KAAK,CAAE,YAAK,EAAE,QAAQ,MAAM,0BAyBvE,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1,15 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import type { AnyAction, Reducer } from 'redux';
5
- /**
6
- * Higher-order reducer creator which creates a combined reducer object, keyed
7
- * by a property on the action object.
8
- *
9
- * @param actionProperty Action property by which to key object.
10
- * @return Higher-order reducer.
11
- */
12
- export declare const onSubKey: <TState extends unknown, TAction extends AnyAction>(actionProperty: string) => (reducer: Reducer<TState, TAction>) => Reducer<Record<string, TState>, TAction>;
13
1
  /**
14
2
  * Normalize selector argument array by defaulting `undefined` value to an empty array
15
3
  * and removing trailing `undefined` values.
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/redux-store/metadata/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhD;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,GAClB,MAAM,SAAS,OAAO,EAAE,OAAO,SAAS,SAAS,EAClD,gBAAgB,MAAM,MAGtB,SAAS,OAAO,CAAE,MAAM,EAAE,OAAO,CAAE,KACjC,OAAO,CAAE,MAAM,CAAE,MAAM,EAAE,MAAM,CAAE,EAAE,OAAO,CAoB5C,CAAC;AAEH;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,GAAG,SAAS,aAWzE"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/redux-store/metadata/utils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,GAAG,SAAS,aAWzE"}
@@ -330,9 +330,14 @@ type SelectorsOf<Config extends AnyConfig> = Config extends ReduxStoreConfig<any
330
330
  * };
331
331
  * ```
332
332
  */
333
- export interface ThunkArgs<S extends StoreDescriptor = StoreDescriptor> {
334
- dispatch: ActionCreatorsOf<S> & ((action: Record<string, unknown> | Function) => unknown);
335
- select: CurriedSelectorsOf<S>;
333
+ export interface ThunkArgs<S extends StoreDescriptor = StoreDescriptor, PrivateSelectors extends Record<string, Function> = {}, PrivateActions extends Record<string, ActionCreator> = {}> {
334
+ dispatch: ActionCreatorsOf<S> & PromisifiedActionCreators<PrivateActions> & {
335
+ <R>(thunk: (...args: any[]) => R): R;
336
+ (action: Record<string, unknown>): unknown;
337
+ };
338
+ select: CurriedSelectorsOf<S> & {
339
+ [key in keyof PrivateSelectors]: CurriedState<PrivateSelectors[key]>;
340
+ };
336
341
  resolveSelect: CurriedSelectorsResolveOf<S>;
337
342
  registry: DataRegistry;
338
343
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/data",
3
- "version": "10.43.1-next.v.202604091042.0+668146787",
3
+ "version": "10.45.0",
4
4
  "description": "Data module for WordPress.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -45,13 +45,13 @@
45
45
  "types": "build-types",
46
46
  "sideEffects": false,
47
47
  "dependencies": {
48
- "@wordpress/compose": "^7.43.1-next.v.202604091042.0+668146787",
49
- "@wordpress/deprecated": "^4.43.1-next.v.202604091042.0+668146787",
50
- "@wordpress/element": "^6.44.1-next.v.202604091042.0+668146787",
51
- "@wordpress/is-shallow-equal": "^5.43.1-next.v.202604091042.0+668146787",
52
- "@wordpress/priority-queue": "^3.43.1-next.v.202604091042.0+668146787",
53
- "@wordpress/private-apis": "^1.43.1-next.v.202604091042.0+668146787",
54
- "@wordpress/redux-routine": "^5.43.1-next.v.202604091042.0+668146787",
48
+ "@wordpress/compose": "^7.45.0",
49
+ "@wordpress/deprecated": "^4.45.0",
50
+ "@wordpress/element": "^6.45.0",
51
+ "@wordpress/is-shallow-equal": "^5.45.0",
52
+ "@wordpress/priority-queue": "^3.45.0",
53
+ "@wordpress/private-apis": "^1.45.0",
54
+ "@wordpress/redux-routine": "^5.45.0",
55
55
  "deepmerge": "^4.3.0",
56
56
  "equivalent-key-map": "^0.2.2",
57
57
  "is-plain-object": "^5.0.0",
@@ -69,5 +69,5 @@
69
69
  "publishConfig": {
70
70
  "access": "public"
71
71
  },
72
- "gitHead": "73606df74f1c38a084bfa5db97205259ef817593"
72
+ "gitHead": "8c229eaed0e88c9827e2da3d73a78f9ddd77714b"
73
73
  }
@@ -1,3 +1,8 @@
1
+ // useSelect is a low-level hook that intentionally breaks rules-of-hooks
2
+ // in its internal helpers (_useStaticSelect, _useMappingSelect) where
3
+ // hooks are called inside non-hook functions and conditionally dispatched.
4
+ /* eslint-disable react-hooks/rules-of-hooks, react-compiler/react-compiler */
5
+
1
6
  /**
2
7
  * WordPress dependencies
3
8
  */
@@ -367,3 +372,4 @@ export function useSuspenseSelect< T extends MapSelect >(
367
372
  ): ReturnType< T > {
368
373
  return _useMappingSelect( true, mapSelect, deps ) as ReturnType< T >;
369
374
  }
375
+ /* eslint-enable react-hooks/rules-of-hooks, react-compiler/react-compiler */
@@ -705,7 +705,12 @@ describe( 'useSelect', () => {
705
705
  'count2:0'
706
706
  );
707
707
 
708
- act( () => screen.getByText( 'Open' ).click() );
708
+ act( () =>
709
+ screen
710
+ .getByText( 'Open' )
711
+ // eslint-disable-next-line testing-library/no-node-access
712
+ .click()
713
+ );
709
714
 
710
715
  expect( selectCount1 ).toHaveBeenCalledTimes( 1 );
711
716
  expect( selectCount2 ).toHaveBeenCalledTimes( 1 );
package/src/index.ts CHANGED
@@ -32,6 +32,7 @@ export { createRegistrySelector, createRegistryControl } from './factory';
32
32
  export { createSelector } from './create-selector';
33
33
  export { controls } from './controls';
34
34
  export { default as createReduxStore } from './redux-store';
35
+ export { keyedReducer } from './redux-store/keyed-reducer';
35
36
  export { dispatch } from './dispatch';
36
37
  export { select } from './select';
37
38
 
@@ -0,0 +1,52 @@
1
+ /**
2
+ * External dependencies
3
+ */
4
+ import type { AnyAction, Reducer } from 'redux';
5
+
6
+ /**
7
+ * Higher-order reducer creator which creates a combined reducer object, keyed
8
+ * by a property on the action object.
9
+ *
10
+ * @param actionProperty Action property by which to key object.
11
+ * @return Higher-order reducer.
12
+ *
13
+ * @example
14
+ * ```js
15
+ * import { keyedReducer } from '@wordpress/data';
16
+ *
17
+ * const itemsByContext = keyedReducer( 'context' )( ( state = [], action ) => {
18
+ * switch ( action.type ) {
19
+ * case 'ADD_ITEM':
20
+ * return [ ...state, action.item ];
21
+ * }
22
+ * return state;
23
+ * } );
24
+ * ```
25
+ */
26
+ export const keyedReducer =
27
+ < TState extends unknown, TAction extends AnyAction >(
28
+ actionProperty: string
29
+ ) =>
30
+ (
31
+ reducer: Reducer< TState, TAction >
32
+ ): Reducer< Record< string, TState >, TAction > =>
33
+ ( state: Record< string, TState > = {}, action ) => {
34
+ // Retrieve subkey from action. Do not track if undefined; useful for cases
35
+ // where reducer is scoped by action shape.
36
+ const key = action[ actionProperty ];
37
+ if ( key === undefined ) {
38
+ return state;
39
+ }
40
+
41
+ // Avoid updating state if unchanged. Note that this also accounts for a
42
+ // reducer which returns undefined on a key which is not yet tracked.
43
+ const nextKeyState = reducer( state[ key ], action );
44
+ if ( nextKeyState === state[ key ] ) {
45
+ return state;
46
+ }
47
+
48
+ return {
49
+ ...state,
50
+ [ key ]: nextKeyState,
51
+ };
52
+ };
@@ -19,7 +19,8 @@ import type {
19
19
  /**
20
20
  * Internal dependencies
21
21
  */
22
- import { selectorArgsToStateKey, onSubKey } from './utils';
22
+ import { keyedReducer } from '../keyed-reducer';
23
+ import { selectorArgsToStateKey } from './utils';
23
24
 
24
25
  type Action =
25
26
  | ReturnType< typeof startResolution >
@@ -46,10 +47,13 @@ export type State = EquivalentKeyMap< StateKey, StateValue >;
46
47
  *
47
48
  * selectorName -> EquivalentKeyMap<Array,boolean>
48
49
  */
49
- const subKeysIsResolved: Reducer< Record< string, State >, Action > = onSubKey<
50
- State,
50
+ const subKeysIsResolved: Reducer<
51
+ Record< string, State >,
51
52
  Action
52
- >( 'selectorName' )( ( state = new EquivalentKeyMap(), action: Action ) => {
53
+ > = keyedReducer< State, Action >( 'selectorName' )( (
54
+ state = new EquivalentKeyMap(),
55
+ action: Action
56
+ ) => {
53
57
  switch ( action.type ) {
54
58
  case 'START_RESOLUTION': {
55
59
  const nextState = new EquivalentKeyMap( state );
@@ -1,44 +1,7 @@
1
1
  /**
2
2
  * Internal dependencies
3
3
  */
4
- import { selectorArgsToStateKey, onSubKey } from '../utils';
5
-
6
- describe( 'onSubKey', () => {
7
- function createEnhancedReducer( actionProperty ) {
8
- const enhanceReducer = onSubKey( actionProperty );
9
- return enhanceReducer(
10
- ( state, action ) => 'Called by ' + action.caller
11
- );
12
- }
13
-
14
- it( 'should default to an empty object', () => {
15
- const reducer = createEnhancedReducer( 'caller' );
16
- const nextState = reducer( undefined, { type: '@@INIT' } );
17
-
18
- expect( nextState ).toEqual( {} );
19
- } );
20
-
21
- it( 'should ignore actions where property not present', () => {
22
- const state = {};
23
- const reducer = createEnhancedReducer( 'caller' );
24
- const nextState = reducer( state, { type: 'DO_FOO' } );
25
-
26
- expect( nextState ).toBe( state );
27
- } );
28
-
29
- it( 'should key by action property', () => {
30
- const reducer = createEnhancedReducer( 'caller' );
31
-
32
- let state = Object.freeze( {} );
33
- state = reducer( state, { type: 'DO_FOO', caller: 1 } );
34
- state = reducer( state, { type: 'DO_FOO', caller: 2 } );
35
-
36
- expect( state ).toEqual( {
37
- 1: 'Called by 1',
38
- 2: 'Called by 2',
39
- } );
40
- } );
41
- } );
4
+ import { selectorArgsToStateKey } from '../utils';
42
5
 
43
6
  describe( 'selectorArgsToStateKey', () => {
44
7
  it( 'should default to an empty array', () => {
@@ -1,43 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import type { AnyAction, Reducer } from 'redux';
5
-
6
- /**
7
- * Higher-order reducer creator which creates a combined reducer object, keyed
8
- * by a property on the action object.
9
- *
10
- * @param actionProperty Action property by which to key object.
11
- * @return Higher-order reducer.
12
- */
13
- export const onSubKey =
14
- < TState extends unknown, TAction extends AnyAction >(
15
- actionProperty: string
16
- ) =>
17
- (
18
- reducer: Reducer< TState, TAction >
19
- ): Reducer< Record< string, TState >, TAction > =>
20
- ( state: Record< string, TState > = {}, action ) => {
21
- // Retrieve subkey from action. Do not track if undefined; useful for cases
22
- // where reducer is scoped by action shape.
23
- const key = action[ actionProperty ];
24
- if ( key === undefined ) {
25
- return state;
26
- }
27
-
28
- // Avoid updating state if unchanged. Note that this also accounts for a
29
- // reducer which returns undefined on a key which is not yet tracked.
30
- const nextKeyState = reducer( state[ key ], action );
31
- if ( nextKeyState === state[ key ] ) {
32
- return state;
33
- }
34
-
35
- return {
36
- ...state,
37
- [ key ]: nextKeyState,
38
- };
39
- };
40
-
41
1
  /**
42
2
  * Normalize selector argument array by defaulting `undefined` value to an empty array
43
3
  * and removing trailing `undefined` values.
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Internal dependencies
3
+ */
4
+ import { keyedReducer } from '../keyed-reducer';
5
+
6
+ describe( 'keyedReducer', () => {
7
+ function createEnhancedReducer( actionProperty ) {
8
+ const enhanceReducer = keyedReducer( actionProperty );
9
+ return enhanceReducer(
10
+ ( state, action ) => 'Called by ' + action.caller
11
+ );
12
+ }
13
+
14
+ it( 'should default to an empty object', () => {
15
+ const reducer = createEnhancedReducer( 'caller' );
16
+ const nextState = reducer( undefined, { type: '@@INIT' } );
17
+
18
+ expect( nextState ).toEqual( {} );
19
+ } );
20
+
21
+ it( 'should ignore actions where property not present', () => {
22
+ const state = {};
23
+ const reducer = createEnhancedReducer( 'caller' );
24
+ const nextState = reducer( state, { type: 'DO_FOO' } );
25
+
26
+ expect( nextState ).toBe( state );
27
+ } );
28
+
29
+ it( 'should key by action property', () => {
30
+ const reducer = createEnhancedReducer( 'caller' );
31
+
32
+ let state = Object.freeze( {} );
33
+ state = reducer( state, { type: 'DO_FOO', caller: 1 } );
34
+ state = reducer( state, { type: 'DO_FOO', caller: 2 } );
35
+
36
+ expect( state ).toEqual( {
37
+ 1: 'Called by 1',
38
+ 2: 'Called by 2',
39
+ } );
40
+ } );
41
+ } );