@wordpress/data 9.13.0 → 9.14.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 CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 9.14.0 (2023-10-18)
6
+
7
+ ## 9.13.1 (2023-10-12)
8
+
9
+ ### Bug Fix
10
+
11
+ - Fix `combineReducers()` types ([#55321](https://github.com/WordPress/gutenberg/pull/55321)).
12
+
5
13
  ## 9.13.0 (2023-10-05)
6
14
 
7
15
  ### Enhancements
package/README.md CHANGED
@@ -1127,6 +1127,86 @@ _Returns_
1127
1127
 
1128
1128
  - `boolean`: Whether resolution is in progress.
1129
1129
 
1130
+ ### Normalizing Selector Arguments
1131
+
1132
+ In specific circumstances it may be necessary to normalize the arguments passed to a given _call_ of a selector/resolver pairing.
1133
+
1134
+ Each resolver has [its resolution status cached in an internal state](https://github.com/WordPress/gutenberg/blob/e244388d8669618b76c966cc33d48df9156c2db6/packages/data/src/redux-store/metadata/reducer.ts#L39) where the [key is the arguments supplied to the selector](https://github.com/WordPress/gutenberg/blob/e244388d8669618b76c966cc33d48df9156c2db6/packages/data/src/redux-store/metadata/utils.ts#L48) at _call_ time.
1135
+
1136
+ For example for a selector with a single argument, the related resolver would generate a cache key of: `[ 123 ]`.
1137
+
1138
+ [This cache is used to determine the resolution status of a given resolver](https://github.com/WordPress/gutenberg/blob/e244388d8669618b76c966cc33d48df9156c2db6/packages/data/src/redux-store/metadata/selectors.js#L22-L29) which is used to [avoid unwanted additional invocations of resolvers](https://github.com/WordPress/gutenberg/blob/e244388d8669618b76c966cc33d48df9156c2db6/packages/data/src/redux-store/index.js#L469-L474) (which often undertake "expensive" operations such as network requests).
1139
+
1140
+ As a result it's important that arguments remain _consistent_ when calling the selector. For example, by _default_ these two calls will not be cached using the same key, even though they are likely identical:
1141
+
1142
+ ```js
1143
+ // Arg as number
1144
+ getSomeDataById( 123 );
1145
+
1146
+ // Arg as string
1147
+ getSomeDataById( '123' );
1148
+ ```
1149
+
1150
+ This is an opportunity to utilize the `__unstableNormalizeArgs` property to guarantee consistency by protecting callers from passing incorrect types.
1151
+
1152
+ #### Example
1153
+
1154
+ The _3rd_ argument of the following selector is intended to be a `Number`:
1155
+
1156
+ ```js
1157
+ const getItemsSelector = ( name, type, id ) => {
1158
+ return state.items[ name ][ type ][ id ] || null;
1159
+ };
1160
+ ```
1161
+
1162
+ However, it is possible that the `id` parameter will be passed as a `String`. In this case, the `__unstableNormalizeArgs` method (property) can be defined on the _selector_ to coerce the arguments to the desired type even if they are provided "incorrectly":
1163
+
1164
+ ```js
1165
+ // Define normalization method.
1166
+ getItemsSelector.__unstableNormalizeArgs = ( args ) {
1167
+ // "id" argument at the 2nd index
1168
+ if (args[2] && typeof args[2] === 'string' ) {
1169
+ args[2] === Number(args[2]);
1170
+ }
1171
+
1172
+ return args;
1173
+ }
1174
+ ```
1175
+
1176
+ With this in place the following code will behave consistently:
1177
+
1178
+ ```js
1179
+ const getItemsSelector = ( name, type, id ) => {
1180
+ // here 'id' is now guaranteed to be a number.
1181
+ return state.items[ name ][ type ][ id ] || null;
1182
+ };
1183
+
1184
+ const getItemsResolver = ( name, type, id ) => {
1185
+ // 'id' is also guaranteed to be a number in the resolver.
1186
+ return {};
1187
+ };
1188
+
1189
+ registry.registerStore( 'store', {
1190
+ // ...
1191
+ selectors: {
1192
+ getItems: getItemsSelector,
1193
+ },
1194
+ resolvers: {
1195
+ getItems: getItemsResolver,
1196
+ },
1197
+ } );
1198
+
1199
+ // Call with correct number type.
1200
+ registry.select( 'store' ).getItems( 'foo', 'bar', 54 );
1201
+
1202
+ // Call with the wrong string type, **but** here we have avoided an
1203
+ // wanted resolver call because '54' is guaranteed to have been
1204
+ // coerced to a number by the `__unstableNormalizeArgs` method.
1205
+ registry.select( 'store' ).getItems( 'foo', 'bar', '54' );
1206
+ ```
1207
+
1208
+ Ensuring consistency of arguments for a given selector call is [an important optimization to help improve performance in the data layer](https://github.com/WordPress/gutenberg/pull/52120). However, this type of problem can be usually be avoided by ensuring selectors don't use variable types for their arguments.
1209
+
1130
1210
  ## Going further
1131
1211
 
1132
1212
  - [What is WordPress Data?](https://unfoldingneurons.com/2020/what-is-wordpress-data/)
package/build/index.js CHANGED
@@ -22,12 +22,7 @@ Object.defineProperty(exports, "RegistryProvider", {
22
22
  return _registryProvider.RegistryProvider;
23
23
  }
24
24
  });
25
- Object.defineProperty(exports, "combineReducers", {
26
- enumerable: true,
27
- get: function () {
28
- return _reduxStore.combineReducers;
29
- }
30
- });
25
+ exports.combineReducers = void 0;
31
26
  Object.defineProperty(exports, "controls", {
32
27
  enumerable: true,
33
28
  get: function () {
@@ -117,6 +112,7 @@ Object.defineProperty(exports, "withSelect", {
117
112
  var _defaultRegistry = _interopRequireDefault(require("./default-registry"));
118
113
  var plugins = _interopRequireWildcard(require("./plugins"));
119
114
  exports.plugins = plugins;
115
+ var _reduxStore = _interopRequireWildcard(require("./redux-store"));
120
116
  var _withSelect = _interopRequireDefault(require("./components/with-select"));
121
117
  var _withDispatch = _interopRequireDefault(require("./components/with-dispatch"));
122
118
  var _withRegistry = _interopRequireDefault(require("./components/with-registry"));
@@ -127,7 +123,6 @@ var _asyncModeProvider = require("./components/async-mode-provider");
127
123
  var _registry = require("./registry");
128
124
  var _factory = require("./factory");
129
125
  var _controls = require("./controls");
130
- var _reduxStore = _interopRequireWildcard(require("./redux-store"));
131
126
  var _dispatch = require("./dispatch");
132
127
  var _select = require("./select");
133
128
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -185,6 +180,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
185
180
  * @return {Function} A reducer that invokes every reducer inside the reducers
186
181
  * object, and constructs a state object with the same shape.
187
182
  */
183
+ const combineReducers = _reduxStore.combineReducers;
188
184
 
189
185
  /**
190
186
  * Given a store descriptor, returns an object containing the store's selectors pre-bound to state
@@ -205,6 +201,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
205
201
  *
206
202
  * @return {Object} Object containing the store's promise-wrapped selectors.
207
203
  */
204
+ exports.combineReducers = combineReducers;
208
205
  const resolveSelect = _defaultRegistry.default.resolveSelect;
209
206
 
210
207
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["_defaultRegistry","_interopRequireDefault","require","plugins","_interopRequireWildcard","exports","_withSelect","_withDispatch","_withRegistry","_registryProvider","_useSelect","_useDispatch","_asyncModeProvider","_registry","_factory","_controls","_reduxStore","_dispatch","_select","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","resolveSelect","defaultRegistry","suspendSelect","subscribe","registerGenericStore","registerStore","use","register"],"sources":["@wordpress/data/src/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport defaultRegistry from './default-registry';\nimport * as plugins from './plugins';\n\n/** @typedef {import('./types').StoreDescriptor} StoreDescriptor */\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 { controls } from './controls';\nexport { default as createReduxStore } from './redux-store';\nexport { dispatch } from './dispatch';\nexport { select } from './select';\n\n/**\n * Object of available plugins to use with a registry.\n *\n * @see [use](#use)\n *\n * @type {Object}\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 { combineReducers } from './redux-store';\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 return promises\n * that resolve to their eventual values, 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} Object containing the store's promise-wrapped selectors.\n */\nexport const resolveSelect = defaultRegistry.resolveSelect;\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 = defaultRegistry.suspendSelect;\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 = defaultRegistry.subscribe;\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 = defaultRegistry.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 = 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 = 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 = defaultRegistry.register;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,IAAAA,gBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAC,uBAAA,CAAAF,OAAA;AAAqCG,OAAA,CAAAF,OAAA,GAAAA,OAAA;AAIrC,IAAAG,WAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,aAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,aAAA,GAAAP,sBAAA,CAAAC,OAAA;AACA,IAAAO,iBAAA,GAAAP,OAAA;AAKA,IAAAQ,UAAA,GAAAN,uBAAA,CAAAF,OAAA;AAIA,IAAAS,YAAA,GAAAT,OAAA;AACA,IAAAU,kBAAA,GAAAV,OAAA;AACA,IAAAW,SAAA,GAAAX,OAAA;AACA,IAAAY,QAAA,GAAAZ,OAAA;AACA,IAAAa,SAAA,GAAAb,OAAA;AACA,IAAAc,WAAA,GAAAZ,uBAAA,CAAAF,OAAA;AACA,IAAAe,SAAA,GAAAf,OAAA;AACA,IAAAgB,OAAA,GAAAhB,OAAA;AAAkC,SAAAiB,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAhB,wBAAAoB,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,CAAAJ,OAAA,GAAAF,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AA3BlC;AACA;AACA;;AAIA;;AAuBA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMW,aAAa,GAAGC,wBAAe,CAACD,aAAa;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAVApC,OAAA,CAAAoC,aAAA,GAAAA,aAAA;AAWO,MAAME,aAAa,GAAGD,wBAAe,CAACC,aAAa;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAvBAtC,OAAA,CAAAsC,aAAA,GAAAA,aAAA;AAwBO,MAAMC,SAAS,GAAGF,wBAAe,CAACE,SAAS;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPAvC,OAAA,CAAAuC,SAAA,GAAAA,SAAA;AAQO,MAAMC,oBAAoB,GAAGH,wBAAe,CAACG,oBAAoB;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATAxC,OAAA,CAAAwC,oBAAA,GAAAA,oBAAA;AAUO,MAAMC,aAAa,GAAGJ,wBAAe,CAACI,aAAa;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AANAzC,OAAA,CAAAyC,aAAA,GAAAA,aAAA;AAOO,MAAMC,GAAG,GAAGL,wBAAe,CAACK,GAAG;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAjBA1C,OAAA,CAAA0C,GAAA,GAAAA,GAAA;AAkBO,MAAMC,QAAQ,GAAGN,wBAAe,CAACM,QAAQ;AAAC3C,OAAA,CAAA2C,QAAA,GAAAA,QAAA"}
1
+ {"version":3,"names":["_defaultRegistry","_interopRequireDefault","require","plugins","_interopRequireWildcard","exports","_reduxStore","_withSelect","_withDispatch","_withRegistry","_registryProvider","_useSelect","_useDispatch","_asyncModeProvider","_registry","_factory","_controls","_dispatch","_select","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","combineReducers","combineReducersModule","resolveSelect","defaultRegistry","suspendSelect","subscribe","registerGenericStore","registerStore","use","register"],"sources":["@wordpress/data/src/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport defaultRegistry from './default-registry';\nimport * as plugins from './plugins';\nimport { combineReducers as combineReducersModule } from './redux-store';\n\n/** @typedef {import('./types').StoreDescriptor} StoreDescriptor */\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 { controls } from './controls';\nexport { default as createReduxStore } from './redux-store';\nexport { dispatch } from './dispatch';\nexport { select } from './select';\n\n/**\n * Object of available plugins to use with a registry.\n *\n * @see [use](#use)\n *\n * @type {Object}\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 = combineReducersModule;\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 return promises\n * that resolve to their eventual values, 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} Object containing the store's promise-wrapped selectors.\n */\nexport const resolveSelect = defaultRegistry.resolveSelect;\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 = defaultRegistry.suspendSelect;\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 = defaultRegistry.subscribe;\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 = defaultRegistry.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 = 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 = 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 = defaultRegistry.register;\n"],"mappings":"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"}
@@ -12,7 +12,7 @@ var _privateApis = require("@wordpress/private-apis");
12
12
  const {
13
13
  lock,
14
14
  unlock
15
- } = (0, _privateApis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)('I know using unstable features means my plugin or theme will inevitably break on the next WordPress release.', '@wordpress/data');
15
+ } = (0, _privateApis.__dangerousOptInToUnstableAPIsOnlyForCoreModules)('I know using unstable features means my theme or plugin will inevitably break in the next version of WordPress.', '@wordpress/data');
16
16
  exports.unlock = unlock;
17
17
  exports.lock = lock;
18
18
  //# sourceMappingURL=lock-unlock.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_privateApis","require","lock","unlock","__dangerousOptInToUnstableAPIsOnlyForCoreModules","exports"],"sources":["@wordpress/data/src/lock-unlock.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';\n\nexport const { lock, unlock } =\n\t__dangerousOptInToUnstableAPIsOnlyForCoreModules(\n\t\t'I know using unstable features means my plugin or theme will inevitably break on the next WordPress release.',\n\t\t'@wordpress/data'\n\t);\n"],"mappings":";;;;;;AAGA,IAAAA,YAAA,GAAAC,OAAA;AAHA;AACA;AACA;;AAGO,MAAM;EAAEC,IAAI;EAAEC;AAAO,CAAC,GAC5B,IAAAC,6DAAgD,EAC/C,8GAA8G,EAC9G,iBACD,CAAC;AAACC,OAAA,CAAAF,MAAA,GAAAA,MAAA;AAAAE,OAAA,CAAAH,IAAA,GAAAA,IAAA"}
1
+ {"version":3,"names":["_privateApis","require","lock","unlock","__dangerousOptInToUnstableAPIsOnlyForCoreModules","exports"],"sources":["@wordpress/data/src/lock-unlock.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';\n\nexport const { lock, unlock } =\n\t__dangerousOptInToUnstableAPIsOnlyForCoreModules(\n\t\t'I know using unstable features means my theme or plugin will inevitably break in the next version of WordPress.',\n\t\t'@wordpress/data'\n\t);\n"],"mappings":";;;;;;AAGA,IAAAA,YAAA,GAAAC,OAAA;AAHA;AACA;AACA;;AAGO,MAAM;EAAEC,IAAI;EAAEC;AAAO,CAAC,GAC5B,IAAAC,6DAAgD,EAC/C,iHAAiH,EACjH,iBACD,CAAC;AAACC,OAAA,CAAAF,MAAA,GAAAA,MAAA;AAAAE,OAAA,CAAAH,IAAA,GAAAA,IAAA"}
@@ -214,9 +214,15 @@ function createReduxStore(key, options) {
214
214
  selector.registry = registry;
215
215
  }
216
216
  const boundSelector = (...args) => {
217
+ args = normalize(selector, args);
217
218
  const state = store.__unstableOriginalGetState();
218
219
  return selector(state.root, ...args);
219
220
  };
221
+
222
+ // Expose normalization method on the bound selector
223
+ // in order that it can be called when fullfilling
224
+ // the resolver.
225
+ boundSelector.__unstableNormalizeArgs = selector.__unstableNormalizeArgs;
220
226
  const resolver = resolvers[selectorName];
221
227
  if (!resolver) {
222
228
  boundSelector.hasResolver = false;
@@ -224,10 +230,18 @@ function createReduxStore(key, options) {
224
230
  }
225
231
  return mapSelectorWithResolver(boundSelector, selectorName, resolver, store, resolversCache);
226
232
  }
227
- function bindMetadataSelector(selector) {
233
+ function bindMetadataSelector(metaDataSelector) {
228
234
  const boundSelector = (...args) => {
229
235
  const state = store.__unstableOriginalGetState();
230
- return selector(state.metadata, ...args);
236
+ const originalSelectorName = args && args[0];
237
+ const originalSelectorArgs = args && args[1];
238
+ const targetSelector = options?.selectors?.[originalSelectorName];
239
+
240
+ // Normalize the arguments passed to the target selector.
241
+ if (originalSelectorName && targetSelector) {
242
+ args[1] = normalize(targetSelector, originalSelectorArgs);
243
+ }
244
+ return metaDataSelector(state.metadata, ...args);
231
245
  };
232
246
  boundSelector.hasResolver = false;
233
247
  return boundSelector;
@@ -498,10 +512,26 @@ function mapSelectorWithResolver(selector, selectorName, resolver, store, resolv
498
512
  }, 0);
499
513
  }
500
514
  const selectorResolver = (...args) => {
515
+ args = normalize(selector, args);
501
516
  fulfillSelector(args);
502
517
  return selector(...args);
503
518
  };
504
519
  selectorResolver.hasResolver = true;
505
520
  return selectorResolver;
506
521
  }
522
+
523
+ /**
524
+ * Applies selector's normalization function to the given arguments
525
+ * if it exists.
526
+ *
527
+ * @param {Object} selector The selector potentially with a normalization method property.
528
+ * @param {Array} args selector arguments to normalize.
529
+ * @return {Array} Potentially normalized arguments.
530
+ */
531
+ function normalize(selector, args) {
532
+ if (selector.__unstableNormalizeArgs && typeof selector.__unstableNormalizeArgs === 'function' && args?.length) {
533
+ return selector.__unstableNormalizeArgs(args);
534
+ }
535
+ return args;
536
+ }
507
537
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_redux","require","_equivalentKeyMap","_interopRequireDefault","_reduxRoutine","_compose","_combineReducers","_controls","_lockUnlock","_promiseMiddleware","_resolversCacheMiddleware","_thunkMiddleware","_reducer","metadataSelectors","_interopRequireWildcard","metadataActions","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","trimUndefinedValues","array","result","i","length","undefined","splice","mapValues","callback","fromEntries","entries","map","value","mapToObject","state","Map","createResolversCache","isRunning","selectorName","args","clear","delete","markAsRunning","EquivalentKeyMap","createBindingCache","bind","item","itemName","boundItem","createReduxStore","options","privateActions","privateSelectors","privateRegistrationFunctions","registerPrivateActions","actions","assign","registerPrivateSelectors","selectors","storeDescriptor","name","instantiate","registry","listeners","Set","reducer","thunkArgs","dispatch","thunkActions","select","thunkSelectors","resolveSelect","getResolveSelectors","store","instantiateReduxStore","lock","resolversCache","bindAction","action","Promise","resolve","boundPrivateActions","allActions","Proxy","target","prop","privateAction","apply","thisArg","resolvers","mapResolvers","bindSelector","selector","isRegistrySelector","boundSelector","__unstableOriginalGetState","root","resolver","hasResolver","mapSelectorWithResolver","bindMetadataSelector","metadata","boundPrivateSelectors","allSelectors","privateSelector","resolveSelectors","mapResolveSelectors","suspendSelectors","mapSuspendSelectors","getSelectors","getActions","getSuspendSelectors","getState","subscribe","listener","add","lastState","hasChanged","controls","builtinControls","normalizedControls","control","isRegistryControl","middlewares","createResolversCacheMiddleware","promise","createReduxRoutineMiddleware","createThunkMiddleware","enhancers","applyMiddleware","window","__REDUX_DEVTOOLS_EXTENSION__","push","instanceId","serialize","replacer","initialState","enhancedReducer","combineReducers","metadataReducer","createStore","compose","getIsResolving","hasStartedResolution","hasFinishedResolution","hasResolutionFailed","isResolving","getCachedResolvers","getResolutionState","getResolutionError","hasResolvingSelectors","countSelectorsByStatus","storeSelectors","reject","hasFinished","finalize","hasFailed","error","getResult","unsubscribe","fulfill","fulfillSelector","isFulfilled","setTimeout","startResolution","finishResolution","failResolution","selectorResolver"],"sources":["@wordpress/data/src/redux-store/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { createStore, applyMiddleware } from 'redux';\nimport EquivalentKeyMap from 'equivalent-key-map';\n\n/**\n * WordPress dependencies\n */\nimport createReduxRoutineMiddleware from '@wordpress/redux-routine';\nimport { compose } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { combineReducers } from './combine-reducers';\nimport { builtinControls } from '../controls';\nimport { lock } from '../lock-unlock';\nimport promise from '../promise-middleware';\nimport createResolversCacheMiddleware from '../resolvers-cache-middleware';\nimport createThunkMiddleware from './thunk-middleware';\nimport metadataReducer from './metadata/reducer';\nimport * as metadataSelectors from './metadata/selectors';\nimport * as metadataActions from './metadata/actions';\n\nexport { combineReducers };\n\n/** @typedef {import('../types').DataRegistry} DataRegistry */\n/** @typedef {import('../types').ListenerFunction} ListenerFunction */\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\nconst trimUndefinedValues = ( array ) => {\n\tconst result = [ ...array ];\n\tfor ( let i = result.length - 1; i >= 0; i-- ) {\n\t\tif ( result[ i ] === undefined ) {\n\t\t\tresult.splice( i, 1 );\n\t\t}\n\t}\n\treturn result;\n};\n\n/**\n * Creates a new object with the same keys, but with `callback()` called as\n * a transformer function on each of the values.\n *\n * @param {Object} obj The object to transform.\n * @param {Function} callback The function to transform each object value.\n * @return {Array} Transformed object.\n */\nconst mapValues = ( obj, callback ) =>\n\tObject.fromEntries(\n\t\tObject.entries( obj ?? {} ).map( ( [ key, value ] ) => [\n\t\t\tkey,\n\t\t\tcallback( value, key ),\n\t\t] )\n\t);\n\n// Convert Map objects to plain objects\nconst mapToObject = ( key, state ) => {\n\tif ( state instanceof Map ) {\n\t\treturn Object.fromEntries( state );\n\t}\n\n\treturn state;\n};\n\n/**\n * Create a cache to track whether resolvers started running or not.\n *\n * @return {Object} Resolvers Cache.\n */\nfunction createResolversCache() {\n\tconst cache = {};\n\treturn {\n\t\tisRunning( selectorName, args ) {\n\t\t\treturn (\n\t\t\t\tcache[ selectorName ] &&\n\t\t\t\tcache[ selectorName ].get( trimUndefinedValues( args ) )\n\t\t\t);\n\t\t},\n\n\t\tclear( selectorName, args ) {\n\t\t\tif ( cache[ selectorName ] ) {\n\t\t\t\tcache[ selectorName ].delete( trimUndefinedValues( args ) );\n\t\t\t}\n\t\t},\n\n\t\tmarkAsRunning( selectorName, args ) {\n\t\t\tif ( ! cache[ selectorName ] ) {\n\t\t\t\tcache[ selectorName ] = new EquivalentKeyMap();\n\t\t\t}\n\n\t\t\tcache[ selectorName ].set( trimUndefinedValues( args ), true );\n\t\t},\n\t};\n}\n\nfunction createBindingCache( bind ) {\n\tconst cache = new WeakMap();\n\n\treturn {\n\t\tget( item, itemName ) {\n\t\t\tlet boundItem = cache.get( item );\n\t\t\tif ( ! boundItem ) {\n\t\t\t\tboundItem = bind( item, itemName );\n\t\t\t\tcache.set( item, boundItem );\n\t\t\t}\n\t\t\treturn boundItem;\n\t\t},\n\t};\n}\n\n/**\n * Creates a data store descriptor for the provided Redux store configuration containing\n * properties describing reducer, actions, selectors, controls and resolvers.\n *\n * @example\n * ```js\n * import { createReduxStore } from '@wordpress/data';\n *\n * const store = createReduxStore( 'demo', {\n * reducer: ( state = 'OK' ) => state,\n * selectors: {\n * getValue: ( state ) => state,\n * },\n * } );\n * ```\n *\n * @template State\n * @template {Record<string,import('../types').ActionCreator>} Actions\n * @template Selectors\n * @param {string} key Unique namespace identifier.\n * @param {ReduxStoreConfig<State,Actions,Selectors>} options Registered store options, with properties\n * describing reducer, actions, selectors,\n * and resolvers.\n *\n * @return {StoreDescriptor<ReduxStoreConfig<State,Actions,Selectors>>} Store Object.\n */\nexport default function createReduxStore( key, options ) {\n\tconst privateActions = {};\n\tconst privateSelectors = {};\n\tconst privateRegistrationFunctions = {\n\t\tprivateActions,\n\t\tregisterPrivateActions: ( actions ) => {\n\t\t\tObject.assign( privateActions, actions );\n\t\t},\n\t\tprivateSelectors,\n\t\tregisterPrivateSelectors: ( selectors ) => {\n\t\t\tObject.assign( privateSelectors, selectors );\n\t\t},\n\t};\n\tconst storeDescriptor = {\n\t\tname: key,\n\t\tinstantiate: ( registry ) => {\n\t\t\t/**\n\t\t\t * Stores listener functions registered with `subscribe()`.\n\t\t\t *\n\t\t\t * When functions register to listen to store changes with\n\t\t\t * `subscribe()` they get added here. Although Redux offers\n\t\t\t * its own `subscribe()` function directly, by wrapping the\n\t\t\t * subscription in this store instance it's possible to\n\t\t\t * optimize checking if the state has changed before calling\n\t\t\t * each listener.\n\t\t\t *\n\t\t\t * @type {Set<ListenerFunction>}\n\t\t\t */\n\t\t\tconst listeners = new Set();\n\t\t\tconst reducer = options.reducer;\n\t\t\tconst thunkArgs = {\n\t\t\t\tregistry,\n\t\t\t\tget dispatch() {\n\t\t\t\t\treturn thunkActions;\n\t\t\t\t},\n\t\t\t\tget select() {\n\t\t\t\t\treturn thunkSelectors;\n\t\t\t\t},\n\t\t\t\tget resolveSelect() {\n\t\t\t\t\treturn getResolveSelectors();\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tconst store = instantiateReduxStore(\n\t\t\t\tkey,\n\t\t\t\toptions,\n\t\t\t\tregistry,\n\t\t\t\tthunkArgs\n\t\t\t);\n\t\t\t// Expose the private registration functions on the store\n\t\t\t// so they can be copied to a sub registry in registry.js.\n\t\t\tlock( store, privateRegistrationFunctions );\n\t\t\tconst resolversCache = createResolversCache();\n\n\t\t\tfunction bindAction( action ) {\n\t\t\t\treturn ( ...args ) =>\n\t\t\t\t\tPromise.resolve( store.dispatch( action( ...args ) ) );\n\t\t\t}\n\n\t\t\tconst actions = {\n\t\t\t\t...mapValues( metadataActions, bindAction ),\n\t\t\t\t...mapValues( options.actions, bindAction ),\n\t\t\t};\n\n\t\t\tconst boundPrivateActions = createBindingCache( bindAction );\n\t\t\tconst allActions = new Proxy( () => {}, {\n\t\t\t\tget: ( target, prop ) => {\n\t\t\t\t\tconst privateAction = privateActions[ prop ];\n\t\t\t\t\treturn privateAction\n\t\t\t\t\t\t? boundPrivateActions.get( privateAction, prop )\n\t\t\t\t\t\t: actions[ prop ];\n\t\t\t\t},\n\t\t\t} );\n\n\t\t\tconst thunkActions = new Proxy( allActions, {\n\t\t\t\tapply: ( target, thisArg, [ action ] ) =>\n\t\t\t\t\tstore.dispatch( action ),\n\t\t\t} );\n\n\t\t\tlock( actions, allActions );\n\n\t\t\tconst resolvers = options.resolvers\n\t\t\t\t? mapResolvers( options.resolvers )\n\t\t\t\t: {};\n\n\t\t\tfunction bindSelector( selector, selectorName ) {\n\t\t\t\tif ( selector.isRegistrySelector ) {\n\t\t\t\t\tselector.registry = registry;\n\t\t\t\t}\n\t\t\t\tconst boundSelector = ( ...args ) => {\n\t\t\t\t\tconst state = store.__unstableOriginalGetState();\n\t\t\t\t\treturn selector( state.root, ...args );\n\t\t\t\t};\n\n\t\t\t\tconst resolver = resolvers[ selectorName ];\n\t\t\t\tif ( ! resolver ) {\n\t\t\t\t\tboundSelector.hasResolver = false;\n\t\t\t\t\treturn boundSelector;\n\t\t\t\t}\n\n\t\t\t\treturn mapSelectorWithResolver(\n\t\t\t\t\tboundSelector,\n\t\t\t\t\tselectorName,\n\t\t\t\t\tresolver,\n\t\t\t\t\tstore,\n\t\t\t\t\tresolversCache\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tfunction bindMetadataSelector( selector ) {\n\t\t\t\tconst boundSelector = ( ...args ) => {\n\t\t\t\t\tconst state = store.__unstableOriginalGetState();\n\t\t\t\t\treturn selector( state.metadata, ...args );\n\t\t\t\t};\n\t\t\t\tboundSelector.hasResolver = false;\n\t\t\t\treturn boundSelector;\n\t\t\t}\n\n\t\t\tconst selectors = {\n\t\t\t\t...mapValues( metadataSelectors, bindMetadataSelector ),\n\t\t\t\t...mapValues( options.selectors, bindSelector ),\n\t\t\t};\n\n\t\t\tconst boundPrivateSelectors = createBindingCache( bindSelector );\n\n\t\t\t// Pre-bind the private selectors that have been registered by the time of\n\t\t\t// instantiation, so that registry selectors are bound to the registry.\n\t\t\tfor ( const [ selectorName, selector ] of Object.entries(\n\t\t\t\tprivateSelectors\n\t\t\t) ) {\n\t\t\t\tboundPrivateSelectors.get( selector, selectorName );\n\t\t\t}\n\n\t\t\tconst allSelectors = new Proxy( () => {}, {\n\t\t\t\tget: ( target, prop ) => {\n\t\t\t\t\tconst privateSelector = privateSelectors[ prop ];\n\t\t\t\t\treturn privateSelector\n\t\t\t\t\t\t? boundPrivateSelectors.get( privateSelector, prop )\n\t\t\t\t\t\t: selectors[ prop ];\n\t\t\t\t},\n\t\t\t} );\n\n\t\t\tconst thunkSelectors = new Proxy( allSelectors, {\n\t\t\t\tapply: ( target, thisArg, [ selector ] ) =>\n\t\t\t\t\tselector( store.__unstableOriginalGetState() ),\n\t\t\t} );\n\n\t\t\tlock( selectors, allSelectors );\n\n\t\t\tconst resolveSelectors = mapResolveSelectors( selectors, store );\n\t\t\tconst suspendSelectors = mapSuspendSelectors( selectors, store );\n\n\t\t\tconst getSelectors = () => selectors;\n\t\t\tconst getActions = () => actions;\n\t\t\tconst getResolveSelectors = () => resolveSelectors;\n\t\t\tconst getSuspendSelectors = () => suspendSelectors;\n\n\t\t\t// We have some modules monkey-patching the store object\n\t\t\t// It's wrong to do so but until we refactor all of our effects to controls\n\t\t\t// We need to keep the same \"store\" instance here.\n\t\t\tstore.__unstableOriginalGetState = store.getState;\n\t\t\tstore.getState = () => store.__unstableOriginalGetState().root;\n\n\t\t\t// Customize subscribe behavior to call listeners only on effective change,\n\t\t\t// not on every dispatch.\n\t\t\tconst subscribe =\n\t\t\t\tstore &&\n\t\t\t\t( ( listener ) => {\n\t\t\t\t\tlisteners.add( listener );\n\n\t\t\t\t\treturn () => listeners.delete( listener );\n\t\t\t\t} );\n\n\t\t\tlet lastState = store.__unstableOriginalGetState();\n\t\t\tstore.subscribe( () => {\n\t\t\t\tconst state = store.__unstableOriginalGetState();\n\t\t\t\tconst hasChanged = state !== lastState;\n\t\t\t\tlastState = state;\n\n\t\t\t\tif ( hasChanged ) {\n\t\t\t\t\tfor ( const listener of listeners ) {\n\t\t\t\t\t\tlistener();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// This can be simplified to just { subscribe, getSelectors, getActions }\n\t\t\t// Once we remove the use function.\n\t\t\treturn {\n\t\t\t\treducer,\n\t\t\t\tstore,\n\t\t\t\tactions,\n\t\t\t\tselectors,\n\t\t\t\tresolvers,\n\t\t\t\tgetSelectors,\n\t\t\t\tgetResolveSelectors,\n\t\t\t\tgetSuspendSelectors,\n\t\t\t\tgetActions,\n\t\t\t\tsubscribe,\n\t\t\t};\n\t\t},\n\t};\n\n\t// Expose the private registration functions on the store\n\t// descriptor. That's a natural choice since that's where the\n\t// public actions and selectors are stored .\n\tlock( storeDescriptor, privateRegistrationFunctions );\n\n\treturn storeDescriptor;\n}\n\n/**\n * Creates a redux store for a namespace.\n *\n * @param {string} key Unique namespace identifier.\n * @param {Object} options Registered store options, with properties\n * describing reducer, actions, selectors,\n * and resolvers.\n * @param {DataRegistry} registry Registry reference.\n * @param {Object} thunkArgs Argument object for the thunk middleware.\n * @return {Object} Newly created redux store.\n */\nfunction instantiateReduxStore( key, options, registry, thunkArgs ) {\n\tconst controls = {\n\t\t...options.controls,\n\t\t...builtinControls,\n\t};\n\n\tconst normalizedControls = mapValues( controls, ( control ) =>\n\t\tcontrol.isRegistryControl ? control( registry ) : control\n\t);\n\n\tconst middlewares = [\n\t\tcreateResolversCacheMiddleware( registry, key ),\n\t\tpromise,\n\t\tcreateReduxRoutineMiddleware( normalizedControls ),\n\t\tcreateThunkMiddleware( thunkArgs ),\n\t];\n\n\tconst enhancers = [ applyMiddleware( ...middlewares ) ];\n\tif (\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.__REDUX_DEVTOOLS_EXTENSION__\n\t) {\n\t\tenhancers.push(\n\t\t\twindow.__REDUX_DEVTOOLS_EXTENSION__( {\n\t\t\t\tname: key,\n\t\t\t\tinstanceId: key,\n\t\t\t\tserialize: {\n\t\t\t\t\treplacer: mapToObject,\n\t\t\t\t},\n\t\t\t} )\n\t\t);\n\t}\n\n\tconst { reducer, initialState } = options;\n\tconst enhancedReducer = combineReducers( {\n\t\tmetadata: metadataReducer,\n\t\troot: reducer,\n\t} );\n\n\treturn createStore(\n\t\tenhancedReducer,\n\t\t{ root: initialState },\n\t\tcompose( enhancers )\n\t);\n}\n\n/**\n * Maps selectors to functions that return a resolution promise for them\n *\n * @param {Object} selectors Selectors to map.\n * @param {Object} store The redux store the selectors select from.\n *\n * @return {Object} Selectors mapped to their resolution functions.\n */\nfunction mapResolveSelectors( selectors, store ) {\n\tconst {\n\t\tgetIsResolving,\n\t\thasStartedResolution,\n\t\thasFinishedResolution,\n\t\thasResolutionFailed,\n\t\tisResolving,\n\t\tgetCachedResolvers,\n\t\tgetResolutionState,\n\t\tgetResolutionError,\n\t\thasResolvingSelectors,\n\t\tcountSelectorsByStatus,\n\t\t...storeSelectors\n\t} = selectors;\n\n\treturn mapValues( storeSelectors, ( selector, selectorName ) => {\n\t\t// If the selector doesn't have a resolver, just convert the return value\n\t\t// (including exceptions) to a Promise, no additional extra behavior is needed.\n\t\tif ( ! selector.hasResolver ) {\n\t\t\treturn async ( ...args ) => selector.apply( null, args );\n\t\t}\n\n\t\treturn ( ...args ) => {\n\t\t\treturn new Promise( ( resolve, reject ) => {\n\t\t\t\tconst hasFinished = () =>\n\t\t\t\t\tselectors.hasFinishedResolution( selectorName, args );\n\t\t\t\tconst finalize = ( result ) => {\n\t\t\t\t\tconst hasFailed = selectors.hasResolutionFailed(\n\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\targs\n\t\t\t\t\t);\n\t\t\t\t\tif ( hasFailed ) {\n\t\t\t\t\t\tconst error = selectors.getResolutionError(\n\t\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\t\targs\n\t\t\t\t\t\t);\n\t\t\t\t\t\treject( error );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolve( result );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tconst getResult = () => selector.apply( null, args );\n\t\t\t\t// Trigger the selector (to trigger the resolver)\n\t\t\t\tconst result = getResult();\n\t\t\t\tif ( hasFinished() ) {\n\t\t\t\t\treturn finalize( result );\n\t\t\t\t}\n\n\t\t\t\tconst unsubscribe = store.subscribe( () => {\n\t\t\t\t\tif ( hasFinished() ) {\n\t\t\t\t\t\tunsubscribe();\n\t\t\t\t\t\tfinalize( getResult() );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t};\n\t} );\n}\n\n/**\n * Maps selectors to functions that throw a suspense promise if not yet resolved.\n *\n * @param {Object} selectors Selectors to map.\n * @param {Object} store The redux store the selectors select from.\n *\n * @return {Object} Selectors mapped to their suspense functions.\n */\nfunction mapSuspendSelectors( selectors, store ) {\n\treturn mapValues( selectors, ( selector, selectorName ) => {\n\t\t// Selector without a resolver doesn't have any extra suspense behavior.\n\t\tif ( ! selector.hasResolver ) {\n\t\t\treturn selector;\n\t\t}\n\n\t\treturn ( ...args ) => {\n\t\t\tconst result = selector.apply( null, args );\n\n\t\t\tif ( selectors.hasFinishedResolution( selectorName, args ) ) {\n\t\t\t\tif ( selectors.hasResolutionFailed( selectorName, args ) ) {\n\t\t\t\t\tthrow selectors.getResolutionError( selectorName, args );\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tthrow new Promise( ( resolve ) => {\n\t\t\t\tconst unsubscribe = store.subscribe( () => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tselectors.hasFinishedResolution( selectorName, args )\n\t\t\t\t\t) {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t\tunsubscribe();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t};\n\t} );\n}\n\n/**\n * Convert resolvers to a normalized form, an object with `fulfill` method and\n * optional methods like `isFulfilled`.\n *\n * @param {Object} resolvers Resolver to convert\n */\nfunction mapResolvers( resolvers ) {\n\treturn mapValues( resolvers, ( resolver ) => {\n\t\tif ( resolver.fulfill ) {\n\t\t\treturn resolver;\n\t\t}\n\n\t\treturn {\n\t\t\t...resolver, // Copy the enumerable properties of the resolver function.\n\t\t\tfulfill: resolver, // Add the fulfill method.\n\t\t};\n\t} );\n}\n\n/**\n * Returns a selector with a matched resolver.\n * Resolvers are side effects invoked once per argument set of a given selector call,\n * used in ensuring that the data needs for the selector are satisfied.\n *\n * @param {Object} selector The selector function to be bound.\n * @param {string} selectorName The selector name.\n * @param {Object} resolver Resolver to call.\n * @param {Object} store The redux store to which the resolvers should be mapped.\n * @param {Object} resolversCache Resolvers Cache.\n */\nfunction mapSelectorWithResolver(\n\tselector,\n\tselectorName,\n\tresolver,\n\tstore,\n\tresolversCache\n) {\n\tfunction fulfillSelector( args ) {\n\t\tconst state = store.getState();\n\n\t\tif (\n\t\t\tresolversCache.isRunning( selectorName, args ) ||\n\t\t\t( typeof resolver.isFulfilled === 'function' &&\n\t\t\t\tresolver.isFulfilled( state, ...args ) )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { metadata } = store.__unstableOriginalGetState();\n\n\t\tif (\n\t\t\tmetadataSelectors.hasStartedResolution(\n\t\t\t\tmetadata,\n\t\t\t\tselectorName,\n\t\t\t\targs\n\t\t\t)\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tresolversCache.markAsRunning( selectorName, args );\n\n\t\tsetTimeout( async () => {\n\t\t\tresolversCache.clear( selectorName, args );\n\t\t\tstore.dispatch(\n\t\t\t\tmetadataActions.startResolution( selectorName, args )\n\t\t\t);\n\t\t\ttry {\n\t\t\t\tconst action = resolver.fulfill( ...args );\n\t\t\t\tif ( action ) {\n\t\t\t\t\tawait store.dispatch( action );\n\t\t\t\t}\n\t\t\t\tstore.dispatch(\n\t\t\t\t\tmetadataActions.finishResolution( selectorName, args )\n\t\t\t\t);\n\t\t\t} catch ( error ) {\n\t\t\t\tstore.dispatch(\n\t\t\t\t\tmetadataActions.failResolution( selectorName, args, error )\n\t\t\t\t);\n\t\t\t}\n\t\t}, 0 );\n\t}\n\n\tconst selectorResolver = ( ...args ) => {\n\t\tfulfillSelector( args );\n\t\treturn selector( ...args );\n\t};\n\tselectorResolver.hasResolver = true;\n\treturn selectorResolver;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_redux","require","_equivalentKeyMap","_interopRequireDefault","_reduxRoutine","_compose","_combineReducers","_controls","_lockUnlock","_promiseMiddleware","_resolversCacheMiddleware","_thunkMiddleware","_reducer","metadataSelectors","_interopRequireWildcard","metadataActions","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","trimUndefinedValues","array","result","i","length","undefined","splice","mapValues","callback","fromEntries","entries","map","value","mapToObject","state","Map","createResolversCache","isRunning","selectorName","args","clear","delete","markAsRunning","EquivalentKeyMap","createBindingCache","bind","item","itemName","boundItem","createReduxStore","options","privateActions","privateSelectors","privateRegistrationFunctions","registerPrivateActions","actions","assign","registerPrivateSelectors","selectors","storeDescriptor","name","instantiate","registry","listeners","Set","reducer","thunkArgs","dispatch","thunkActions","select","thunkSelectors","resolveSelect","getResolveSelectors","store","instantiateReduxStore","lock","resolversCache","bindAction","action","Promise","resolve","boundPrivateActions","allActions","Proxy","target","prop","privateAction","apply","thisArg","resolvers","mapResolvers","bindSelector","selector","isRegistrySelector","boundSelector","normalize","__unstableOriginalGetState","root","__unstableNormalizeArgs","resolver","hasResolver","mapSelectorWithResolver","bindMetadataSelector","metaDataSelector","originalSelectorName","originalSelectorArgs","targetSelector","metadata","boundPrivateSelectors","allSelectors","privateSelector","resolveSelectors","mapResolveSelectors","suspendSelectors","mapSuspendSelectors","getSelectors","getActions","getSuspendSelectors","getState","subscribe","listener","add","lastState","hasChanged","controls","builtinControls","normalizedControls","control","isRegistryControl","middlewares","createResolversCacheMiddleware","promise","createReduxRoutineMiddleware","createThunkMiddleware","enhancers","applyMiddleware","window","__REDUX_DEVTOOLS_EXTENSION__","push","instanceId","serialize","replacer","initialState","enhancedReducer","combineReducers","metadataReducer","createStore","compose","getIsResolving","hasStartedResolution","hasFinishedResolution","hasResolutionFailed","isResolving","getCachedResolvers","getResolutionState","getResolutionError","hasResolvingSelectors","countSelectorsByStatus","storeSelectors","reject","hasFinished","finalize","hasFailed","error","getResult","unsubscribe","fulfill","fulfillSelector","isFulfilled","setTimeout","startResolution","finishResolution","failResolution","selectorResolver"],"sources":["@wordpress/data/src/redux-store/index.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { createStore, applyMiddleware } from 'redux';\nimport EquivalentKeyMap from 'equivalent-key-map';\n\n/**\n * WordPress dependencies\n */\nimport createReduxRoutineMiddleware from '@wordpress/redux-routine';\nimport { compose } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { combineReducers } from './combine-reducers';\nimport { builtinControls } from '../controls';\nimport { lock } from '../lock-unlock';\nimport promise from '../promise-middleware';\nimport createResolversCacheMiddleware from '../resolvers-cache-middleware';\nimport createThunkMiddleware from './thunk-middleware';\nimport metadataReducer from './metadata/reducer';\nimport * as metadataSelectors from './metadata/selectors';\nimport * as metadataActions from './metadata/actions';\n\nexport { combineReducers };\n\n/** @typedef {import('../types').DataRegistry} DataRegistry */\n/** @typedef {import('../types').ListenerFunction} ListenerFunction */\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\nconst trimUndefinedValues = ( array ) => {\n\tconst result = [ ...array ];\n\tfor ( let i = result.length - 1; i >= 0; i-- ) {\n\t\tif ( result[ i ] === undefined ) {\n\t\t\tresult.splice( i, 1 );\n\t\t}\n\t}\n\treturn result;\n};\n\n/**\n * Creates a new object with the same keys, but with `callback()` called as\n * a transformer function on each of the values.\n *\n * @param {Object} obj The object to transform.\n * @param {Function} callback The function to transform each object value.\n * @return {Array} Transformed object.\n */\nconst mapValues = ( obj, callback ) =>\n\tObject.fromEntries(\n\t\tObject.entries( obj ?? {} ).map( ( [ key, value ] ) => [\n\t\t\tkey,\n\t\t\tcallback( value, key ),\n\t\t] )\n\t);\n\n// Convert Map objects to plain objects\nconst mapToObject = ( key, state ) => {\n\tif ( state instanceof Map ) {\n\t\treturn Object.fromEntries( state );\n\t}\n\n\treturn state;\n};\n\n/**\n * Create a cache to track whether resolvers started running or not.\n *\n * @return {Object} Resolvers Cache.\n */\nfunction createResolversCache() {\n\tconst cache = {};\n\treturn {\n\t\tisRunning( selectorName, args ) {\n\t\t\treturn (\n\t\t\t\tcache[ selectorName ] &&\n\t\t\t\tcache[ selectorName ].get( trimUndefinedValues( args ) )\n\t\t\t);\n\t\t},\n\n\t\tclear( selectorName, args ) {\n\t\t\tif ( cache[ selectorName ] ) {\n\t\t\t\tcache[ selectorName ].delete( trimUndefinedValues( args ) );\n\t\t\t}\n\t\t},\n\n\t\tmarkAsRunning( selectorName, args ) {\n\t\t\tif ( ! cache[ selectorName ] ) {\n\t\t\t\tcache[ selectorName ] = new EquivalentKeyMap();\n\t\t\t}\n\n\t\t\tcache[ selectorName ].set( trimUndefinedValues( args ), true );\n\t\t},\n\t};\n}\n\nfunction createBindingCache( bind ) {\n\tconst cache = new WeakMap();\n\n\treturn {\n\t\tget( item, itemName ) {\n\t\t\tlet boundItem = cache.get( item );\n\t\t\tif ( ! boundItem ) {\n\t\t\t\tboundItem = bind( item, itemName );\n\t\t\t\tcache.set( item, boundItem );\n\t\t\t}\n\t\t\treturn boundItem;\n\t\t},\n\t};\n}\n\n/**\n * Creates a data store descriptor for the provided Redux store configuration containing\n * properties describing reducer, actions, selectors, controls and resolvers.\n *\n * @example\n * ```js\n * import { createReduxStore } from '@wordpress/data';\n *\n * const store = createReduxStore( 'demo', {\n * reducer: ( state = 'OK' ) => state,\n * selectors: {\n * getValue: ( state ) => state,\n * },\n * } );\n * ```\n *\n * @template State\n * @template {Record<string,import('../types').ActionCreator>} Actions\n * @template Selectors\n * @param {string} key Unique namespace identifier.\n * @param {ReduxStoreConfig<State,Actions,Selectors>} options Registered store options, with properties\n * describing reducer, actions, selectors,\n * and resolvers.\n *\n * @return {StoreDescriptor<ReduxStoreConfig<State,Actions,Selectors>>} Store Object.\n */\nexport default function createReduxStore( key, options ) {\n\tconst privateActions = {};\n\tconst privateSelectors = {};\n\tconst privateRegistrationFunctions = {\n\t\tprivateActions,\n\t\tregisterPrivateActions: ( actions ) => {\n\t\t\tObject.assign( privateActions, actions );\n\t\t},\n\t\tprivateSelectors,\n\t\tregisterPrivateSelectors: ( selectors ) => {\n\t\t\tObject.assign( privateSelectors, selectors );\n\t\t},\n\t};\n\tconst storeDescriptor = {\n\t\tname: key,\n\t\tinstantiate: ( registry ) => {\n\t\t\t/**\n\t\t\t * Stores listener functions registered with `subscribe()`.\n\t\t\t *\n\t\t\t * When functions register to listen to store changes with\n\t\t\t * `subscribe()` they get added here. Although Redux offers\n\t\t\t * its own `subscribe()` function directly, by wrapping the\n\t\t\t * subscription in this store instance it's possible to\n\t\t\t * optimize checking if the state has changed before calling\n\t\t\t * each listener.\n\t\t\t *\n\t\t\t * @type {Set<ListenerFunction>}\n\t\t\t */\n\t\t\tconst listeners = new Set();\n\t\t\tconst reducer = options.reducer;\n\t\t\tconst thunkArgs = {\n\t\t\t\tregistry,\n\t\t\t\tget dispatch() {\n\t\t\t\t\treturn thunkActions;\n\t\t\t\t},\n\t\t\t\tget select() {\n\t\t\t\t\treturn thunkSelectors;\n\t\t\t\t},\n\t\t\t\tget resolveSelect() {\n\t\t\t\t\treturn getResolveSelectors();\n\t\t\t\t},\n\t\t\t};\n\n\t\t\tconst store = instantiateReduxStore(\n\t\t\t\tkey,\n\t\t\t\toptions,\n\t\t\t\tregistry,\n\t\t\t\tthunkArgs\n\t\t\t);\n\t\t\t// Expose the private registration functions on the store\n\t\t\t// so they can be copied to a sub registry in registry.js.\n\t\t\tlock( store, privateRegistrationFunctions );\n\t\t\tconst resolversCache = createResolversCache();\n\n\t\t\tfunction bindAction( action ) {\n\t\t\t\treturn ( ...args ) =>\n\t\t\t\t\tPromise.resolve( store.dispatch( action( ...args ) ) );\n\t\t\t}\n\n\t\t\tconst actions = {\n\t\t\t\t...mapValues( metadataActions, bindAction ),\n\t\t\t\t...mapValues( options.actions, bindAction ),\n\t\t\t};\n\n\t\t\tconst boundPrivateActions = createBindingCache( bindAction );\n\t\t\tconst allActions = new Proxy( () => {}, {\n\t\t\t\tget: ( target, prop ) => {\n\t\t\t\t\tconst privateAction = privateActions[ prop ];\n\t\t\t\t\treturn privateAction\n\t\t\t\t\t\t? boundPrivateActions.get( privateAction, prop )\n\t\t\t\t\t\t: actions[ prop ];\n\t\t\t\t},\n\t\t\t} );\n\n\t\t\tconst thunkActions = new Proxy( allActions, {\n\t\t\t\tapply: ( target, thisArg, [ action ] ) =>\n\t\t\t\t\tstore.dispatch( action ),\n\t\t\t} );\n\n\t\t\tlock( actions, allActions );\n\n\t\t\tconst resolvers = options.resolvers\n\t\t\t\t? mapResolvers( options.resolvers )\n\t\t\t\t: {};\n\n\t\t\tfunction bindSelector( selector, selectorName ) {\n\t\t\t\tif ( selector.isRegistrySelector ) {\n\t\t\t\t\tselector.registry = registry;\n\t\t\t\t}\n\t\t\t\tconst boundSelector = ( ...args ) => {\n\t\t\t\t\targs = normalize( selector, args );\n\t\t\t\t\tconst state = store.__unstableOriginalGetState();\n\t\t\t\t\treturn selector( state.root, ...args );\n\t\t\t\t};\n\n\t\t\t\t// Expose normalization method on the bound selector\n\t\t\t\t// in order that it can be called when fullfilling\n\t\t\t\t// the resolver.\n\t\t\t\tboundSelector.__unstableNormalizeArgs =\n\t\t\t\t\tselector.__unstableNormalizeArgs;\n\n\t\t\t\tconst resolver = resolvers[ selectorName ];\n\n\t\t\t\tif ( ! resolver ) {\n\t\t\t\t\tboundSelector.hasResolver = false;\n\t\t\t\t\treturn boundSelector;\n\t\t\t\t}\n\n\t\t\t\treturn mapSelectorWithResolver(\n\t\t\t\t\tboundSelector,\n\t\t\t\t\tselectorName,\n\t\t\t\t\tresolver,\n\t\t\t\t\tstore,\n\t\t\t\t\tresolversCache\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tfunction bindMetadataSelector( metaDataSelector ) {\n\t\t\t\tconst boundSelector = ( ...args ) => {\n\t\t\t\t\tconst state = store.__unstableOriginalGetState();\n\n\t\t\t\t\tconst originalSelectorName = args && args[ 0 ];\n\t\t\t\t\tconst originalSelectorArgs = args && args[ 1 ];\n\t\t\t\t\tconst targetSelector =\n\t\t\t\t\t\toptions?.selectors?.[ originalSelectorName ];\n\n\t\t\t\t\t// Normalize the arguments passed to the target selector.\n\t\t\t\t\tif ( originalSelectorName && targetSelector ) {\n\t\t\t\t\t\targs[ 1 ] = normalize(\n\t\t\t\t\t\t\ttargetSelector,\n\t\t\t\t\t\t\toriginalSelectorArgs\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn metaDataSelector( state.metadata, ...args );\n\t\t\t\t};\n\t\t\t\tboundSelector.hasResolver = false;\n\t\t\t\treturn boundSelector;\n\t\t\t}\n\n\t\t\tconst selectors = {\n\t\t\t\t...mapValues( metadataSelectors, bindMetadataSelector ),\n\t\t\t\t...mapValues( options.selectors, bindSelector ),\n\t\t\t};\n\n\t\t\tconst boundPrivateSelectors = createBindingCache( bindSelector );\n\n\t\t\t// Pre-bind the private selectors that have been registered by the time of\n\t\t\t// instantiation, so that registry selectors are bound to the registry.\n\t\t\tfor ( const [ selectorName, selector ] of Object.entries(\n\t\t\t\tprivateSelectors\n\t\t\t) ) {\n\t\t\t\tboundPrivateSelectors.get( selector, selectorName );\n\t\t\t}\n\n\t\t\tconst allSelectors = new Proxy( () => {}, {\n\t\t\t\tget: ( target, prop ) => {\n\t\t\t\t\tconst privateSelector = privateSelectors[ prop ];\n\t\t\t\t\treturn privateSelector\n\t\t\t\t\t\t? boundPrivateSelectors.get( privateSelector, prop )\n\t\t\t\t\t\t: selectors[ prop ];\n\t\t\t\t},\n\t\t\t} );\n\n\t\t\tconst thunkSelectors = new Proxy( allSelectors, {\n\t\t\t\tapply: ( target, thisArg, [ selector ] ) =>\n\t\t\t\t\tselector( store.__unstableOriginalGetState() ),\n\t\t\t} );\n\n\t\t\tlock( selectors, allSelectors );\n\n\t\t\tconst resolveSelectors = mapResolveSelectors( selectors, store );\n\t\t\tconst suspendSelectors = mapSuspendSelectors( selectors, store );\n\n\t\t\tconst getSelectors = () => selectors;\n\t\t\tconst getActions = () => actions;\n\t\t\tconst getResolveSelectors = () => resolveSelectors;\n\t\t\tconst getSuspendSelectors = () => suspendSelectors;\n\n\t\t\t// We have some modules monkey-patching the store object\n\t\t\t// It's wrong to do so but until we refactor all of our effects to controls\n\t\t\t// We need to keep the same \"store\" instance here.\n\t\t\tstore.__unstableOriginalGetState = store.getState;\n\t\t\tstore.getState = () => store.__unstableOriginalGetState().root;\n\n\t\t\t// Customize subscribe behavior to call listeners only on effective change,\n\t\t\t// not on every dispatch.\n\t\t\tconst subscribe =\n\t\t\t\tstore &&\n\t\t\t\t( ( listener ) => {\n\t\t\t\t\tlisteners.add( listener );\n\n\t\t\t\t\treturn () => listeners.delete( listener );\n\t\t\t\t} );\n\n\t\t\tlet lastState = store.__unstableOriginalGetState();\n\t\t\tstore.subscribe( () => {\n\t\t\t\tconst state = store.__unstableOriginalGetState();\n\t\t\t\tconst hasChanged = state !== lastState;\n\t\t\t\tlastState = state;\n\n\t\t\t\tif ( hasChanged ) {\n\t\t\t\t\tfor ( const listener of listeners ) {\n\t\t\t\t\t\tlistener();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// This can be simplified to just { subscribe, getSelectors, getActions }\n\t\t\t// Once we remove the use function.\n\t\t\treturn {\n\t\t\t\treducer,\n\t\t\t\tstore,\n\t\t\t\tactions,\n\t\t\t\tselectors,\n\t\t\t\tresolvers,\n\t\t\t\tgetSelectors,\n\t\t\t\tgetResolveSelectors,\n\t\t\t\tgetSuspendSelectors,\n\t\t\t\tgetActions,\n\t\t\t\tsubscribe,\n\t\t\t};\n\t\t},\n\t};\n\n\t// Expose the private registration functions on the store\n\t// descriptor. That's a natural choice since that's where the\n\t// public actions and selectors are stored .\n\tlock( storeDescriptor, privateRegistrationFunctions );\n\n\treturn storeDescriptor;\n}\n\n/**\n * Creates a redux store for a namespace.\n *\n * @param {string} key Unique namespace identifier.\n * @param {Object} options Registered store options, with properties\n * describing reducer, actions, selectors,\n * and resolvers.\n * @param {DataRegistry} registry Registry reference.\n * @param {Object} thunkArgs Argument object for the thunk middleware.\n * @return {Object} Newly created redux store.\n */\nfunction instantiateReduxStore( key, options, registry, thunkArgs ) {\n\tconst controls = {\n\t\t...options.controls,\n\t\t...builtinControls,\n\t};\n\n\tconst normalizedControls = mapValues( controls, ( control ) =>\n\t\tcontrol.isRegistryControl ? control( registry ) : control\n\t);\n\n\tconst middlewares = [\n\t\tcreateResolversCacheMiddleware( registry, key ),\n\t\tpromise,\n\t\tcreateReduxRoutineMiddleware( normalizedControls ),\n\t\tcreateThunkMiddleware( thunkArgs ),\n\t];\n\n\tconst enhancers = [ applyMiddleware( ...middlewares ) ];\n\tif (\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.__REDUX_DEVTOOLS_EXTENSION__\n\t) {\n\t\tenhancers.push(\n\t\t\twindow.__REDUX_DEVTOOLS_EXTENSION__( {\n\t\t\t\tname: key,\n\t\t\t\tinstanceId: key,\n\t\t\t\tserialize: {\n\t\t\t\t\treplacer: mapToObject,\n\t\t\t\t},\n\t\t\t} )\n\t\t);\n\t}\n\n\tconst { reducer, initialState } = options;\n\tconst enhancedReducer = combineReducers( {\n\t\tmetadata: metadataReducer,\n\t\troot: reducer,\n\t} );\n\n\treturn createStore(\n\t\tenhancedReducer,\n\t\t{ root: initialState },\n\t\tcompose( enhancers )\n\t);\n}\n\n/**\n * Maps selectors to functions that return a resolution promise for them\n *\n * @param {Object} selectors Selectors to map.\n * @param {Object} store The redux store the selectors select from.\n *\n * @return {Object} Selectors mapped to their resolution functions.\n */\nfunction mapResolveSelectors( selectors, store ) {\n\tconst {\n\t\tgetIsResolving,\n\t\thasStartedResolution,\n\t\thasFinishedResolution,\n\t\thasResolutionFailed,\n\t\tisResolving,\n\t\tgetCachedResolvers,\n\t\tgetResolutionState,\n\t\tgetResolutionError,\n\t\thasResolvingSelectors,\n\t\tcountSelectorsByStatus,\n\t\t...storeSelectors\n\t} = selectors;\n\n\treturn mapValues( storeSelectors, ( selector, selectorName ) => {\n\t\t// If the selector doesn't have a resolver, just convert the return value\n\t\t// (including exceptions) to a Promise, no additional extra behavior is needed.\n\t\tif ( ! selector.hasResolver ) {\n\t\t\treturn async ( ...args ) => selector.apply( null, args );\n\t\t}\n\n\t\treturn ( ...args ) => {\n\t\t\treturn new Promise( ( resolve, reject ) => {\n\t\t\t\tconst hasFinished = () =>\n\t\t\t\t\tselectors.hasFinishedResolution( selectorName, args );\n\t\t\t\tconst finalize = ( result ) => {\n\t\t\t\t\tconst hasFailed = selectors.hasResolutionFailed(\n\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\targs\n\t\t\t\t\t);\n\t\t\t\t\tif ( hasFailed ) {\n\t\t\t\t\t\tconst error = selectors.getResolutionError(\n\t\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\t\targs\n\t\t\t\t\t\t);\n\t\t\t\t\t\treject( error );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolve( result );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tconst getResult = () => selector.apply( null, args );\n\t\t\t\t// Trigger the selector (to trigger the resolver)\n\t\t\t\tconst result = getResult();\n\t\t\t\tif ( hasFinished() ) {\n\t\t\t\t\treturn finalize( result );\n\t\t\t\t}\n\n\t\t\t\tconst unsubscribe = store.subscribe( () => {\n\t\t\t\t\tif ( hasFinished() ) {\n\t\t\t\t\t\tunsubscribe();\n\t\t\t\t\t\tfinalize( getResult() );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t};\n\t} );\n}\n\n/**\n * Maps selectors to functions that throw a suspense promise if not yet resolved.\n *\n * @param {Object} selectors Selectors to map.\n * @param {Object} store The redux store the selectors select from.\n *\n * @return {Object} Selectors mapped to their suspense functions.\n */\nfunction mapSuspendSelectors( selectors, store ) {\n\treturn mapValues( selectors, ( selector, selectorName ) => {\n\t\t// Selector without a resolver doesn't have any extra suspense behavior.\n\t\tif ( ! selector.hasResolver ) {\n\t\t\treturn selector;\n\t\t}\n\n\t\treturn ( ...args ) => {\n\t\t\tconst result = selector.apply( null, args );\n\n\t\t\tif ( selectors.hasFinishedResolution( selectorName, args ) ) {\n\t\t\t\tif ( selectors.hasResolutionFailed( selectorName, args ) ) {\n\t\t\t\t\tthrow selectors.getResolutionError( selectorName, args );\n\t\t\t\t}\n\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tthrow new Promise( ( resolve ) => {\n\t\t\t\tconst unsubscribe = store.subscribe( () => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tselectors.hasFinishedResolution( selectorName, args )\n\t\t\t\t\t) {\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t\tunsubscribe();\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\t};\n\t} );\n}\n\n/**\n * Convert resolvers to a normalized form, an object with `fulfill` method and\n * optional methods like `isFulfilled`.\n *\n * @param {Object} resolvers Resolver to convert\n */\nfunction mapResolvers( resolvers ) {\n\treturn mapValues( resolvers, ( resolver ) => {\n\t\tif ( resolver.fulfill ) {\n\t\t\treturn resolver;\n\t\t}\n\n\t\treturn {\n\t\t\t...resolver, // Copy the enumerable properties of the resolver function.\n\t\t\tfulfill: resolver, // Add the fulfill method.\n\t\t};\n\t} );\n}\n\n/**\n * Returns a selector with a matched resolver.\n * Resolvers are side effects invoked once per argument set of a given selector call,\n * used in ensuring that the data needs for the selector are satisfied.\n *\n * @param {Object} selector The selector function to be bound.\n * @param {string} selectorName The selector name.\n * @param {Object} resolver Resolver to call.\n * @param {Object} store The redux store to which the resolvers should be mapped.\n * @param {Object} resolversCache Resolvers Cache.\n */\nfunction mapSelectorWithResolver(\n\tselector,\n\tselectorName,\n\tresolver,\n\tstore,\n\tresolversCache\n) {\n\tfunction fulfillSelector( args ) {\n\t\tconst state = store.getState();\n\n\t\tif (\n\t\t\tresolversCache.isRunning( selectorName, args ) ||\n\t\t\t( typeof resolver.isFulfilled === 'function' &&\n\t\t\t\tresolver.isFulfilled( state, ...args ) )\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { metadata } = store.__unstableOriginalGetState();\n\n\t\tif (\n\t\t\tmetadataSelectors.hasStartedResolution(\n\t\t\t\tmetadata,\n\t\t\t\tselectorName,\n\t\t\t\targs\n\t\t\t)\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tresolversCache.markAsRunning( selectorName, args );\n\n\t\tsetTimeout( async () => {\n\t\t\tresolversCache.clear( selectorName, args );\n\t\t\tstore.dispatch(\n\t\t\t\tmetadataActions.startResolution( selectorName, args )\n\t\t\t);\n\t\t\ttry {\n\t\t\t\tconst action = resolver.fulfill( ...args );\n\t\t\t\tif ( action ) {\n\t\t\t\t\tawait store.dispatch( action );\n\t\t\t\t}\n\t\t\t\tstore.dispatch(\n\t\t\t\t\tmetadataActions.finishResolution( selectorName, args )\n\t\t\t\t);\n\t\t\t} catch ( error ) {\n\t\t\t\tstore.dispatch(\n\t\t\t\t\tmetadataActions.failResolution( selectorName, args, error )\n\t\t\t\t);\n\t\t\t}\n\t\t}, 0 );\n\t}\n\n\tconst selectorResolver = ( ...args ) => {\n\t\targs = normalize( selector, args );\n\t\tfulfillSelector( args );\n\t\treturn selector( ...args );\n\t};\n\tselectorResolver.hasResolver = true;\n\treturn selectorResolver;\n}\n\n/**\n * Applies selector's normalization function to the given arguments\n * if it exists.\n *\n * @param {Object} selector The selector potentially with a normalization method property.\n * @param {Array} args selector arguments to normalize.\n * @return {Array} Potentially normalized arguments.\n */\nfunction normalize( selector, args ) {\n\tif (\n\t\tselector.__unstableNormalizeArgs &&\n\t\ttypeof selector.__unstableNormalizeArgs === 'function' &&\n\t\targs?.length\n\t) {\n\t\treturn selector.__unstableNormalizeArgs( args );\n\t}\n\treturn args;\n}\n"],"mappings":"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"}
@@ -3,6 +3,7 @@
3
3
  */
4
4
  import defaultRegistry from './default-registry';
5
5
  import * as plugins from './plugins';
6
+ import { combineReducers as combineReducersModule } from './redux-store';
6
7
 
7
8
  /** @typedef {import('./types').StoreDescriptor} StoreDescriptor */
8
9
 
@@ -68,7 +69,7 @@ export { plugins };
68
69
  * @return {Function} A reducer that invokes every reducer inside the reducers
69
70
  * object, and constructs a state object with the same shape.
70
71
  */
71
- export { combineReducers } from './redux-store';
72
+ export const combineReducers = combineReducersModule;
72
73
 
73
74
  /**
74
75
  * Given a store descriptor, returns an object containing the store's selectors pre-bound to state
@@ -1 +1 @@
1
- {"version":3,"names":["defaultRegistry","plugins","default","withSelect","withDispatch","withRegistry","RegistryProvider","RegistryConsumer","useRegistry","useSelect","useSuspenseSelect","useDispatch","AsyncModeProvider","createRegistry","createRegistrySelector","createRegistryControl","controls","createReduxStore","dispatch","select","combineReducers","resolveSelect","suspendSelect","subscribe","registerGenericStore","registerStore","use","register"],"sources":["@wordpress/data/src/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport defaultRegistry from './default-registry';\nimport * as plugins from './plugins';\n\n/** @typedef {import('./types').StoreDescriptor} StoreDescriptor */\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 { controls } from './controls';\nexport { default as createReduxStore } from './redux-store';\nexport { dispatch } from './dispatch';\nexport { select } from './select';\n\n/**\n * Object of available plugins to use with a registry.\n *\n * @see [use](#use)\n *\n * @type {Object}\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 { combineReducers } from './redux-store';\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 return promises\n * that resolve to their eventual values, 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} Object containing the store's promise-wrapped selectors.\n */\nexport const resolveSelect = defaultRegistry.resolveSelect;\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 = defaultRegistry.suspendSelect;\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 = defaultRegistry.subscribe;\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 = defaultRegistry.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 = 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 = 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 = defaultRegistry.register;\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,eAAe,MAAM,oBAAoB;AAChD,OAAO,KAAKC,OAAO,MAAM,WAAW;;AAEpC;;AAEA,SAASC,OAAO,IAAIC,UAAU,QAAQ,0BAA0B;AAChE,SAASD,OAAO,IAAIE,YAAY,QAAQ,4BAA4B;AACpE,SAASF,OAAO,IAAIG,YAAY,QAAQ,4BAA4B;AACpE,SACCC,gBAAgB,EAChBC,gBAAgB,EAChBC,WAAW,QACL,gCAAgC;AACvC,SACCN,OAAO,IAAIO,SAAS,EACpBC,iBAAiB,QACX,yBAAyB;AAChC,SAASC,WAAW,QAAQ,2BAA2B;AACvD,SAASC,iBAAiB,QAAQ,kCAAkC;AACpE,SAASC,cAAc,QAAQ,YAAY;AAC3C,SAASC,sBAAsB,EAAEC,qBAAqB,QAAQ,WAAW;AACzE,SAASC,QAAQ,QAAQ,YAAY;AACrC,SAASd,OAAO,IAAIe,gBAAgB,QAAQ,eAAe;AAC3D,SAASC,QAAQ,QAAQ,YAAY;AACrC,SAASC,MAAM,QAAQ,UAAU;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASlB,OAAO;;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASmB,eAAe,QAAQ,eAAe;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GAAGrB,eAAe,CAACqB,aAAa;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GAAGtB,eAAe,CAACsB,aAAa;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,SAAS,GAAGvB,eAAe,CAACuB,SAAS;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,oBAAoB,GAAGxB,eAAe,CAACwB,oBAAoB;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GAAGzB,eAAe,CAACyB,aAAa;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,GAAG,GAAG1B,eAAe,CAAC0B,GAAG;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,QAAQ,GAAG3B,eAAe,CAAC2B,QAAQ"}
1
+ {"version":3,"names":["defaultRegistry","plugins","combineReducers","combineReducersModule","default","withSelect","withDispatch","withRegistry","RegistryProvider","RegistryConsumer","useRegistry","useSelect","useSuspenseSelect","useDispatch","AsyncModeProvider","createRegistry","createRegistrySelector","createRegistryControl","controls","createReduxStore","dispatch","select","resolveSelect","suspendSelect","subscribe","registerGenericStore","registerStore","use","register"],"sources":["@wordpress/data/src/index.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport defaultRegistry from './default-registry';\nimport * as plugins from './plugins';\nimport { combineReducers as combineReducersModule } from './redux-store';\n\n/** @typedef {import('./types').StoreDescriptor} StoreDescriptor */\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 { controls } from './controls';\nexport { default as createReduxStore } from './redux-store';\nexport { dispatch } from './dispatch';\nexport { select } from './select';\n\n/**\n * Object of available plugins to use with a registry.\n *\n * @see [use](#use)\n *\n * @type {Object}\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 = combineReducersModule;\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 return promises\n * that resolve to their eventual values, 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} Object containing the store's promise-wrapped selectors.\n */\nexport const resolveSelect = defaultRegistry.resolveSelect;\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 = defaultRegistry.suspendSelect;\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 = defaultRegistry.subscribe;\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 = defaultRegistry.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 = 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 = 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 = defaultRegistry.register;\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,eAAe,MAAM,oBAAoB;AAChD,OAAO,KAAKC,OAAO,MAAM,WAAW;AACpC,SAASC,eAAe,IAAIC,qBAAqB,QAAQ,eAAe;;AAExE;;AAEA,SAASC,OAAO,IAAIC,UAAU,QAAQ,0BAA0B;AAChE,SAASD,OAAO,IAAIE,YAAY,QAAQ,4BAA4B;AACpE,SAASF,OAAO,IAAIG,YAAY,QAAQ,4BAA4B;AACpE,SACCC,gBAAgB,EAChBC,gBAAgB,EAChBC,WAAW,QACL,gCAAgC;AACvC,SACCN,OAAO,IAAIO,SAAS,EACpBC,iBAAiB,QACX,yBAAyB;AAChC,SAASC,WAAW,QAAQ,2BAA2B;AACvD,SAASC,iBAAiB,QAAQ,kCAAkC;AACpE,SAASC,cAAc,QAAQ,YAAY;AAC3C,SAASC,sBAAsB,EAAEC,qBAAqB,QAAQ,WAAW;AACzE,SAASC,QAAQ,QAAQ,YAAY;AACrC,SAASd,OAAO,IAAIe,gBAAgB,QAAQ,eAAe;AAC3D,SAASC,QAAQ,QAAQ,YAAY;AACrC,SAASC,MAAM,QAAQ,UAAU;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASpB,OAAO;;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,eAAe,GAAGC,qBAAqB;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMmB,aAAa,GAAGtB,eAAe,CAACsB,aAAa;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GAAGvB,eAAe,CAACuB,aAAa;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,SAAS,GAAGxB,eAAe,CAACwB,SAAS;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,oBAAoB,GAAGzB,eAAe,CAACyB,oBAAoB;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GAAG1B,eAAe,CAAC0B,aAAa;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,GAAG,GAAG3B,eAAe,CAAC2B,GAAG;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,QAAQ,GAAG5B,eAAe,CAAC4B,QAAQ"}
@@ -5,5 +5,5 @@ import { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/pri
5
5
  export const {
6
6
  lock,
7
7
  unlock
8
- } = __dangerousOptInToUnstableAPIsOnlyForCoreModules('I know using unstable features means my plugin or theme will inevitably break on the next WordPress release.', '@wordpress/data');
8
+ } = __dangerousOptInToUnstableAPIsOnlyForCoreModules('I know using unstable features means my theme or plugin will inevitably break in the next version of WordPress.', '@wordpress/data');
9
9
  //# sourceMappingURL=lock-unlock.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["__dangerousOptInToUnstableAPIsOnlyForCoreModules","lock","unlock"],"sources":["@wordpress/data/src/lock-unlock.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';\n\nexport const { lock, unlock } =\n\t__dangerousOptInToUnstableAPIsOnlyForCoreModules(\n\t\t'I know using unstable features means my plugin or theme will inevitably break on the next WordPress release.',\n\t\t'@wordpress/data'\n\t);\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,gDAAgD,QAAQ,yBAAyB;AAE1F,OAAO,MAAM;EAAEC,IAAI;EAAEC;AAAO,CAAC,GAC5BF,gDAAgD,CAC/C,8GAA8G,EAC9G,iBACD,CAAC"}
1
+ {"version":3,"names":["__dangerousOptInToUnstableAPIsOnlyForCoreModules","lock","unlock"],"sources":["@wordpress/data/src/lock-unlock.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __dangerousOptInToUnstableAPIsOnlyForCoreModules } from '@wordpress/private-apis';\n\nexport const { lock, unlock } =\n\t__dangerousOptInToUnstableAPIsOnlyForCoreModules(\n\t\t'I know using unstable features means my theme or plugin will inevitably break in the next version of WordPress.',\n\t\t'@wordpress/data'\n\t);\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,gDAAgD,QAAQ,yBAAyB;AAE1F,OAAO,MAAM;EAAEC,IAAI;EAAEC;AAAO,CAAC,GAC5BF,gDAAgD,CAC/C,iHAAiH,EACjH,iBACD,CAAC"}
@@ -200,9 +200,15 @@ export default function createReduxStore(key, options) {
200
200
  selector.registry = registry;
201
201
  }
202
202
  const boundSelector = (...args) => {
203
+ args = normalize(selector, args);
203
204
  const state = store.__unstableOriginalGetState();
204
205
  return selector(state.root, ...args);
205
206
  };
207
+
208
+ // Expose normalization method on the bound selector
209
+ // in order that it can be called when fullfilling
210
+ // the resolver.
211
+ boundSelector.__unstableNormalizeArgs = selector.__unstableNormalizeArgs;
206
212
  const resolver = resolvers[selectorName];
207
213
  if (!resolver) {
208
214
  boundSelector.hasResolver = false;
@@ -210,10 +216,18 @@ export default function createReduxStore(key, options) {
210
216
  }
211
217
  return mapSelectorWithResolver(boundSelector, selectorName, resolver, store, resolversCache);
212
218
  }
213
- function bindMetadataSelector(selector) {
219
+ function bindMetadataSelector(metaDataSelector) {
214
220
  const boundSelector = (...args) => {
215
221
  const state = store.__unstableOriginalGetState();
216
- return selector(state.metadata, ...args);
222
+ const originalSelectorName = args && args[0];
223
+ const originalSelectorArgs = args && args[1];
224
+ const targetSelector = options?.selectors?.[originalSelectorName];
225
+
226
+ // Normalize the arguments passed to the target selector.
227
+ if (originalSelectorName && targetSelector) {
228
+ args[1] = normalize(targetSelector, originalSelectorArgs);
229
+ }
230
+ return metaDataSelector(state.metadata, ...args);
217
231
  };
218
232
  boundSelector.hasResolver = false;
219
233
  return boundSelector;
@@ -484,10 +498,26 @@ function mapSelectorWithResolver(selector, selectorName, resolver, store, resolv
484
498
  }, 0);
485
499
  }
486
500
  const selectorResolver = (...args) => {
501
+ args = normalize(selector, args);
487
502
  fulfillSelector(args);
488
503
  return selector(...args);
489
504
  };
490
505
  selectorResolver.hasResolver = true;
491
506
  return selectorResolver;
492
507
  }
508
+
509
+ /**
510
+ * Applies selector's normalization function to the given arguments
511
+ * if it exists.
512
+ *
513
+ * @param {Object} selector The selector potentially with a normalization method property.
514
+ * @param {Array} args selector arguments to normalize.
515
+ * @return {Array} Potentially normalized arguments.
516
+ */
517
+ function normalize(selector, args) {
518
+ if (selector.__unstableNormalizeArgs && typeof selector.__unstableNormalizeArgs === 'function' && args?.length) {
519
+ return selector.__unstableNormalizeArgs(args);
520
+ }
521
+ return args;
522
+ }
493
523
  //# sourceMappingURL=index.js.map