@wordpress/data 9.2.0 → 9.4.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 +4 -0
- package/README.md +4 -4
- package/build/dispatch.js +38 -0
- package/build/dispatch.js.map +1 -0
- package/build/index.js +18 -55
- package/build/index.js.map +1 -1
- package/build/redux-store/index.js +10 -4
- package/build/redux-store/index.js.map +1 -1
- package/build/redux-store/metadata/selectors.js +25 -0
- package/build/redux-store/metadata/selectors.js.map +1 -1
- package/build/select.js +38 -0
- package/build/select.js.map +1 -0
- package/build-module/dispatch.js +28 -0
- package/build-module/dispatch.js.map +1 -0
- package/build-module/index.js +2 -47
- package/build-module/index.js.map +1 -1
- package/build-module/redux-store/index.js +10 -4
- package/build-module/redux-store/index.js.map +1 -1
- package/build-module/redux-store/metadata/selectors.js +23 -0
- package/build-module/redux-store/metadata/selectors.js.map +1 -1
- package/build-module/select.js +28 -0
- package/build-module/select.js.map +1 -0
- package/build-types/dispatch.d.ts +25 -0
- package/build-types/dispatch.d.ts.map +1 -0
- package/build-types/index.d.ts +2 -41
- package/build-types/index.d.ts.map +1 -1
- package/build-types/redux-store/index.d.ts.map +1 -1
- package/build-types/redux-store/metadata/selectors.d.ts +8 -0
- package/build-types/redux-store/metadata/selectors.d.ts.map +1 -1
- package/build-types/select.d.ts +25 -0
- package/build-types/select.d.ts.map +1 -0
- package/package.json +9 -9
- package/src/dispatch.ts +35 -0
- package/src/index.js +2 -47
- package/src/redux-store/index.js +8 -6
- package/src/redux-store/metadata/selectors.js +22 -0
- package/src/redux-store/metadata/test/selectors.js +32 -0
- package/src/redux-store/test/index.js +1 -0
- package/src/select.ts +30 -0
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -499,11 +499,11 @@ dispatch( myCustomStore ).setPrice( 'hammer', 9.75 );
|
|
|
499
499
|
|
|
500
500
|
_Parameters_
|
|
501
501
|
|
|
502
|
-
- _storeNameOrDescriptor_ `
|
|
502
|
+
- _storeNameOrDescriptor_ `string | T`: The store descriptor. The legacy calling convention of passing the store name is also supported.
|
|
503
503
|
|
|
504
504
|
_Returns_
|
|
505
505
|
|
|
506
|
-
- `
|
|
506
|
+
- `ActionCreatorsOf< ConfigOf< T > >`: Object containing the action creators.
|
|
507
507
|
|
|
508
508
|
### plugins
|
|
509
509
|
|
|
@@ -638,11 +638,11 @@ select( myCustomStore ).getPrice( 'hammer' );
|
|
|
638
638
|
|
|
639
639
|
_Parameters_
|
|
640
640
|
|
|
641
|
-
- _storeNameOrDescriptor_ `
|
|
641
|
+
- _storeNameOrDescriptor_ `string | T`: The store descriptor. The legacy calling convention of passing the store name is also supported.
|
|
642
642
|
|
|
643
643
|
_Returns_
|
|
644
644
|
|
|
645
|
-
- `
|
|
645
|
+
- `CurriedSelectorsOf< T >`: Object containing the store's selectors.
|
|
646
646
|
|
|
647
647
|
### subscribe
|
|
648
648
|
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.dispatch = dispatch;
|
|
9
|
+
|
|
10
|
+
var _defaultRegistry = _interopRequireDefault(require("./default-registry"));
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Internal dependencies
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Given a store descriptor, returns an object of the store's action creators.
|
|
18
|
+
* Calling an action creator will cause it to be dispatched, updating the state value accordingly.
|
|
19
|
+
*
|
|
20
|
+
* Note: Action creators returned by the dispatch will return a promise when
|
|
21
|
+
* they are called.
|
|
22
|
+
*
|
|
23
|
+
* @param storeNameOrDescriptor The store descriptor. The legacy calling convention of passing
|
|
24
|
+
* the store name is also supported.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```js
|
|
28
|
+
* import { dispatch } from '@wordpress/data';
|
|
29
|
+
* import { store as myCustomStore } from 'my-custom-store';
|
|
30
|
+
*
|
|
31
|
+
* dispatch( myCustomStore ).setPrice( 'hammer', 9.75 );
|
|
32
|
+
* ```
|
|
33
|
+
* @return Object containing the action creators.
|
|
34
|
+
*/
|
|
35
|
+
function dispatch(storeNameOrDescriptor) {
|
|
36
|
+
return _defaultRegistry.default.dispatch(storeNameOrDescriptor);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=dispatch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/data/src/dispatch.ts"],"names":["dispatch","storeNameOrDescriptor","defaultRegistry"],"mappings":";;;;;;;;;AASA;;AATA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,QAAT,CACNC,qBADM,EAE8B;AACpC,SAAOC,yBAAgBF,QAAhB,CAA0BC,qBAA1B,CAAP;AACA","sourcesContent":["/**\n * Internal dependencies\n */\nimport type {\n\tActionCreatorsOf,\n\tAnyConfig,\n\tConfigOf,\n\tStoreDescriptor,\n} from './types';\nimport defaultRegistry from './default-registry';\n\n/**\n * Given a store descriptor, returns an object of the store's action creators.\n * Calling an action creator will cause it to be dispatched, updating the state value accordingly.\n *\n * Note: Action creators returned by the dispatch will return a promise when\n * they are called.\n *\n * @param storeNameOrDescriptor The store descriptor. The legacy calling convention of passing\n * the store name is also supported.\n *\n * @example\n * ```js\n * import { dispatch } from '@wordpress/data';\n * import { store as myCustomStore } from 'my-custom-store';\n *\n * dispatch( myCustomStore ).setPrice( 'hammer', 9.75 );\n * ```\n * @return Object containing the action creators.\n */\nexport function dispatch< T extends StoreDescriptor< AnyConfig > >(\n\tstoreNameOrDescriptor: string | T\n): ActionCreatorsOf< ConfigOf< T > > {\n\treturn defaultRegistry.dispatch( storeNameOrDescriptor );\n}\n"]}
|
package/build/index.js
CHANGED
|
@@ -54,9 +54,19 @@ Object.defineProperty(exports, "createRegistrySelector", {
|
|
|
54
54
|
return _factory.createRegistrySelector;
|
|
55
55
|
}
|
|
56
56
|
});
|
|
57
|
-
exports
|
|
57
|
+
Object.defineProperty(exports, "dispatch", {
|
|
58
|
+
enumerable: true,
|
|
59
|
+
get: function () {
|
|
60
|
+
return _dispatch.dispatch;
|
|
61
|
+
}
|
|
62
|
+
});
|
|
58
63
|
exports.resolveSelect = exports.registerStore = exports.registerGenericStore = exports.register = exports.plugins = void 0;
|
|
59
|
-
exports
|
|
64
|
+
Object.defineProperty(exports, "select", {
|
|
65
|
+
enumerable: true,
|
|
66
|
+
get: function () {
|
|
67
|
+
return _select.select;
|
|
68
|
+
}
|
|
69
|
+
});
|
|
60
70
|
exports.use = exports.suspendSelect = exports.subscribe = void 0;
|
|
61
71
|
Object.defineProperty(exports, "useDispatch", {
|
|
62
72
|
enumerable: true,
|
|
@@ -131,6 +141,10 @@ var _controls = require("./controls");
|
|
|
131
141
|
|
|
132
142
|
var _reduxStore = _interopRequireDefault(require("./redux-store"));
|
|
133
143
|
|
|
144
|
+
var _dispatch = require("./dispatch");
|
|
145
|
+
|
|
146
|
+
var _select = require("./select");
|
|
147
|
+
|
|
134
148
|
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); }
|
|
135
149
|
|
|
136
150
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -193,31 +207,6 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
193
207
|
* object, and constructs a state object with the same shape.
|
|
194
208
|
*/
|
|
195
209
|
const combineReducers = _turboCombineReducers.default;
|
|
196
|
-
/**
|
|
197
|
-
* Given a store descriptor, returns an object of the store's selectors.
|
|
198
|
-
* The selector functions are been pre-bound to pass the current state automatically.
|
|
199
|
-
* As a consumer, you need only pass arguments of the selector, if applicable.
|
|
200
|
-
*
|
|
201
|
-
* @param {StoreDescriptor|string} storeNameOrDescriptor The store descriptor. The legacy calling
|
|
202
|
-
* convention of passing the store name is
|
|
203
|
-
* also supported.
|
|
204
|
-
*
|
|
205
|
-
* @example
|
|
206
|
-
* ```js
|
|
207
|
-
* import { select } from '@wordpress/data';
|
|
208
|
-
* import { store as myCustomStore } from 'my-custom-store';
|
|
209
|
-
*
|
|
210
|
-
* select( myCustomStore ).getPrice( 'hammer' );
|
|
211
|
-
* ```
|
|
212
|
-
*
|
|
213
|
-
* @return {Object} Object containing the store's selectors.
|
|
214
|
-
*/
|
|
215
|
-
|
|
216
|
-
exports.combineReducers = combineReducers;
|
|
217
|
-
|
|
218
|
-
function select(storeNameOrDescriptor) {
|
|
219
|
-
return _defaultRegistry.default.select(storeNameOrDescriptor);
|
|
220
|
-
}
|
|
221
210
|
/**
|
|
222
211
|
* Given a store descriptor, returns an object containing the store's selectors pre-bound to state
|
|
223
212
|
* so that you only need to supply additional arguments, and modified so that they return promises
|
|
@@ -238,7 +227,7 @@ function select(storeNameOrDescriptor) {
|
|
|
238
227
|
* @return {Object} Object containing the store's promise-wrapped selectors.
|
|
239
228
|
*/
|
|
240
229
|
|
|
241
|
-
|
|
230
|
+
exports.combineReducers = combineReducers;
|
|
242
231
|
const resolveSelect = _defaultRegistry.default.resolveSelect;
|
|
243
232
|
/**
|
|
244
233
|
* Given a store descriptor, returns an object containing the store's selectors pre-bound to state
|
|
@@ -254,32 +243,6 @@ const resolveSelect = _defaultRegistry.default.resolveSelect;
|
|
|
254
243
|
|
|
255
244
|
exports.resolveSelect = resolveSelect;
|
|
256
245
|
const suspendSelect = _defaultRegistry.default.suspendSelect;
|
|
257
|
-
/**
|
|
258
|
-
* Given a store descriptor, returns an object of the store's action creators.
|
|
259
|
-
* Calling an action creator will cause it to be dispatched, updating the state value accordingly.
|
|
260
|
-
*
|
|
261
|
-
* Note: Action creators returned by the dispatch will return a promise when
|
|
262
|
-
* they are called.
|
|
263
|
-
*
|
|
264
|
-
* @param {StoreDescriptor|string} storeNameOrDescriptor The store descriptor. The legacy calling
|
|
265
|
-
* convention of passing the store name is
|
|
266
|
-
* also supported.
|
|
267
|
-
*
|
|
268
|
-
* @example
|
|
269
|
-
* ```js
|
|
270
|
-
* import { dispatch } from '@wordpress/data';
|
|
271
|
-
* import { store as myCustomStore } from 'my-custom-store';
|
|
272
|
-
*
|
|
273
|
-
* dispatch( myCustomStore ).setPrice( 'hammer', 9.75 );
|
|
274
|
-
* ```
|
|
275
|
-
* @return {Object} Object containing the action creators.
|
|
276
|
-
*/
|
|
277
|
-
|
|
278
|
-
exports.suspendSelect = suspendSelect;
|
|
279
|
-
|
|
280
|
-
function dispatch(storeNameOrDescriptor) {
|
|
281
|
-
return _defaultRegistry.default.dispatch(storeNameOrDescriptor);
|
|
282
|
-
}
|
|
283
246
|
/**
|
|
284
247
|
* Given a listener function, the function will be called any time the state value
|
|
285
248
|
* of one of the registered stores has changed. If you specify the optional
|
|
@@ -305,7 +268,7 @@ function dispatch(storeNameOrDescriptor) {
|
|
|
305
268
|
* ```
|
|
306
269
|
*/
|
|
307
270
|
|
|
308
|
-
|
|
271
|
+
exports.suspendSelect = suspendSelect;
|
|
309
272
|
const subscribe = _defaultRegistry.default.subscribe;
|
|
310
273
|
/**
|
|
311
274
|
* Registers a generic store instance.
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/data/src/index.js"],"names":["combineReducers","turboCombineReducers","select","storeNameOrDescriptor","defaultRegistry","resolveSelect","suspendSelect","dispatch","subscribe","registerGenericStore","registerStore","use","register"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;;AAKA;;AACA;;;;AAIA;;AACA;;AACA;;AACA;;AAKA;;AAIA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AA9BA;AACA;AACA;;AAGA;AACA;AACA;;AAIA;;AAqBA;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;AACO,MAAMA,eAAe,GAAGC,6BAAxB;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AACO,SAASC,MAAT,CAAiBC,qBAAjB,EAAyC;AAC/C,SAAOC,yBAAgBF,MAAhB,CAAwBC,qBAAxB,CAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAME,aAAa,GAAGD,yBAAgBC,aAAtC;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMC,aAAa,GAAGF,yBAAgBE,aAAtC;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AACO,SAASC,QAAT,CAAmBJ,qBAAnB,EAA2C;AACjD,SAAOC,yBAAgBG,QAAhB,CAA0BJ,qBAA1B,CAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMK,SAAS,GAAGJ,yBAAgBI,SAAlC;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMC,oBAAoB,GAAGL,yBAAgBK,oBAA7C;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMC,aAAa,GAAGN,yBAAgBM,aAAtC;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMC,GAAG,GAAGP,yBAAgBO,GAA5B;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMC,QAAQ,GAAGR,yBAAgBQ,QAAjC","sourcesContent":["/**\n * External dependencies\n */\nimport turboCombineReducers from 'turbo-combine-reducers';\n\n/**\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';\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 = turboCombineReducers;\n\n/**\n * Given a store descriptor, returns an object of the store's selectors.\n * The selector functions are been pre-bound to pass the current state automatically.\n * As a consumer, you need only pass arguments of the selector, if applicable.\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 { select } from '@wordpress/data';\n * import { store as myCustomStore } from 'my-custom-store';\n *\n * select( myCustomStore ).getPrice( 'hammer' );\n * ```\n *\n * @return {Object} Object containing the store's selectors.\n */\nexport function select( storeNameOrDescriptor ) {\n\treturn defaultRegistry.select( storeNameOrDescriptor );\n}\n\n/**\n * Given a store descriptor, returns an object containing the store's selectors pre-bound to state\n * so that you only need to supply additional arguments, and modified so that they 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 store descriptor, returns an object of the store's action creators.\n * Calling an action creator will cause it to be dispatched, updating the state value accordingly.\n *\n * Note: Action creators returned by the dispatch will return a promise when\n * they are called.\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 { dispatch } from '@wordpress/data';\n * import { store as myCustomStore } from 'my-custom-store';\n *\n * dispatch( myCustomStore ).setPrice( 'hammer', 9.75 );\n * ```\n * @return {Object} Object containing the action creators.\n */\nexport function dispatch( storeNameOrDescriptor ) {\n\treturn defaultRegistry.dispatch( storeNameOrDescriptor );\n}\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"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/data/src/index.js"],"names":["combineReducers","turboCombineReducers","resolveSelect","defaultRegistry","suspendSelect","subscribe","registerGenericStore","registerStore","use","register"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA;;AAKA;;AACA;;;;AAIA;;AACA;;AACA;;AACA;;AAKA;;AAIA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAhCA;AACA;AACA;;AAGA;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;AACO,MAAMA,eAAe,GAAGC,6BAAxB;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMC,aAAa,GAAGC,yBAAgBD,aAAtC;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAME,aAAa,GAAGD,yBAAgBC,aAAtC;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMC,SAAS,GAAGF,yBAAgBE,SAAlC;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMC,oBAAoB,GAAGH,yBAAgBG,oBAA7C;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMC,aAAa,GAAGJ,yBAAgBI,aAAtC;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMC,GAAG,GAAGL,yBAAgBK,GAA5B;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,MAAMC,QAAQ,GAAGN,yBAAgBM,QAAjC","sourcesContent":["/**\n * External dependencies\n */\nimport turboCombineReducers from 'turbo-combine-reducers';\n\n/**\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 const combineReducers = turboCombineReducers;\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"]}
|
|
@@ -226,12 +226,18 @@ function createReduxStore(key, options) {
|
|
|
226
226
|
}, store);
|
|
227
227
|
(0, _privateApis.lock)(selectors, new Proxy(privateSelectors, {
|
|
228
228
|
get: (target, prop) => {
|
|
229
|
-
return mapSelectors(mapValues(privateSelectors, selector =>
|
|
230
|
-
|
|
231
|
-
|
|
229
|
+
return mapSelectors(mapValues(privateSelectors, selector => {
|
|
230
|
+
if (selector.isRegistrySelector) {
|
|
231
|
+
selector.registry = registry;
|
|
232
232
|
}
|
|
233
233
|
|
|
234
|
-
return
|
|
234
|
+
return function (state) {
|
|
235
|
+
for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
|
|
236
|
+
args[_key3 - 1] = arguments[_key3];
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
return selector(state.root, ...args);
|
|
240
|
+
};
|
|
235
241
|
}), store)[prop] || selectors[prop];
|
|
236
242
|
}
|
|
237
243
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/data/src/redux-store/index.js"],"names":["trimUndefinedValues","array","result","i","length","undefined","splice","mapValues","obj","callback","Object","entries","reduce","acc","key","value","mapToObject","state","Map","fromEntries","createResolversCache","cache","isRunning","selectorName","args","get","clear","delete","markAsRunning","EquivalentKeyMap","set","createReduxStore","options","privateActions","privateSelectors","privateRegistrationFunctions","registerPrivateActions","actions","assign","registerPrivateSelectors","selectors","storeDescriptor","name","instantiate","registry","reducer","thunkArgs","dispatch","action","store","getActions","select","selector","__unstableOriginalGetState","getSelectors","resolveSelect","getResolveSelectors","instantiateReduxStore","resolversCache","resolvers","mapActions","metadataActions","Proxy","target","prop","mapSelectors","metadataSelectors","metadata","isRegistrySelector","root","mapResolvers","resolveSelectors","mapResolveSelectors","suspendSelectors","mapSuspendSelectors","getSuspendSelectors","getState","subscribe","listener","lastState","hasChanged","controls","builtinControls","normalizedControls","control","isRegistryControl","middlewares","promise","enhancers","window","__REDUX_DEVTOOLS_EXTENSION__","push","instanceId","serialize","replacer","initialState","enhancedReducer","metadataReducer","createStateSelector","registrySelector","runSelector","argsLength","arguments","Array","hasResolver","createBoundAction","Promise","resolve","getIsResolving","hasStartedResolution","hasFinishedResolution","hasResolutionFailed","isResolving","getCachedResolvers","getResolutionState","getResolutionError","storeSelectors","apply","reject","hasFinished","finalize","hasFailed","error","getResult","unsubscribe","mappedResolvers","resolver","fulfill","mapSelector","selectorResolver","fulfillSelector","isFulfilled","setTimeout","startResolution","fulfillResolver","finishResolution","failResolution"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { createStore, applyMiddleware } from 'redux';\nimport combineReducers from 'turbo-combine-reducers';\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 { builtinControls } from '../controls';\nimport { lock } from '../private-apis';\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\n/** @typedef {import('../types').DataRegistry} DataRegistry */\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.entries( obj ?? {} ).reduce(\n\t\t( acc, [ key, value ] ) => ( {\n\t\t\t...acc,\n\t\t\t[ key ]: callback( value, key ),\n\t\t} ),\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\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\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 Object.assign(\n\t\t\t\t\t\t( action ) => store.dispatch( action ),\n\t\t\t\t\t\tgetActions()\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tget select() {\n\t\t\t\t\treturn Object.assign(\n\t\t\t\t\t\t( selector ) =>\n\t\t\t\t\t\t\tselector( store.__unstableOriginalGetState() ),\n\t\t\t\t\t\tgetSelectors()\n\t\t\t\t\t);\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\tlet resolvers;\n\t\t\tconst actions = mapActions(\n\t\t\t\t{\n\t\t\t\t\t...metadataActions,\n\t\t\t\t\t...options.actions,\n\t\t\t\t},\n\t\t\t\tstore\n\t\t\t);\n\t\t\tlock(\n\t\t\t\tactions,\n\t\t\t\tnew Proxy( privateActions, {\n\t\t\t\t\tget: ( target, prop ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tmapActions( privateActions, store )[ prop ] ||\n\t\t\t\t\t\t\tactions[ prop ]\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t} )\n\t\t\t);\n\n\t\t\tlet selectors = mapSelectors(\n\t\t\t\t{\n\t\t\t\t\t...mapValues(\n\t\t\t\t\t\tmetadataSelectors,\n\t\t\t\t\t\t( selector ) =>\n\t\t\t\t\t\t\t( state, ...args ) =>\n\t\t\t\t\t\t\t\tselector( state.metadata, ...args )\n\t\t\t\t\t),\n\t\t\t\t\t...mapValues( options.selectors, ( selector ) => {\n\t\t\t\t\t\tif ( selector.isRegistrySelector ) {\n\t\t\t\t\t\t\tselector.registry = registry;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn ( state, ...args ) =>\n\t\t\t\t\t\t\tselector( state.root, ...args );\n\t\t\t\t\t} ),\n\t\t\t\t},\n\t\t\t\tstore\n\t\t\t);\n\t\t\tlock(\n\t\t\t\tselectors,\n\t\t\t\tnew Proxy( privateSelectors, {\n\t\t\t\t\tget: ( target, prop ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tmapSelectors(\n\t\t\t\t\t\t\t\tmapValues(\n\t\t\t\t\t\t\t\t\tprivateSelectors,\n\t\t\t\t\t\t\t\t\t( selector ) =>\n\t\t\t\t\t\t\t\t\t\t( state, ...args ) =>\n\t\t\t\t\t\t\t\t\t\t\tselector( state.root, ...args )\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tstore\n\t\t\t\t\t\t\t)[ prop ] || selectors[ prop ]\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t} )\n\t\t\t);\n\n\t\t\tif ( options.resolvers ) {\n\t\t\t\tconst result = mapResolvers(\n\t\t\t\t\toptions.resolvers,\n\t\t\t\t\tselectors,\n\t\t\t\t\tstore,\n\t\t\t\t\tresolversCache\n\t\t\t\t);\n\t\t\t\tresolvers = result.resolvers;\n\t\t\t\tselectors = result.selectors;\n\t\t\t}\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\tlet lastState = store.__unstableOriginalGetState();\n\t\t\t\t\treturn store.subscribe( () => {\n\t\t\t\t\t\tconst state = store.__unstableOriginalGetState();\n\t\t\t\t\t\tconst hasChanged = state !== lastState;\n\t\t\t\t\t\tlastState = state;\n\n\t\t\t\t\t\tif ( hasChanged ) {\n\t\t\t\t\t\t\tlistener();\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\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 a store.\n *\n * @param {Object} selectors Selectors to register. Keys will be used as the\n * public facing API. Selectors will get passed the\n * state as first argument.\n * @param {Object} store The store to which the selectors should be mapped.\n * @return {Object} Selectors mapped to the provided store.\n */\nfunction mapSelectors( selectors, store ) {\n\tconst createStateSelector = ( registrySelector ) => {\n\t\tconst selector = function runSelector() {\n\t\t\t// This function is an optimized implementation of:\n\t\t\t//\n\t\t\t// selector( store.getState(), ...arguments )\n\t\t\t//\n\t\t\t// Where the above would incur an `Array#concat` in its application,\n\t\t\t// the logic here instead efficiently constructs an arguments array via\n\t\t\t// direct assignment.\n\t\t\tconst argsLength = arguments.length;\n\t\t\tconst args = new Array( argsLength + 1 );\n\t\t\targs[ 0 ] = store.__unstableOriginalGetState();\n\t\t\tfor ( let i = 0; i < argsLength; i++ ) {\n\t\t\t\targs[ i + 1 ] = arguments[ i ];\n\t\t\t}\n\n\t\t\treturn registrySelector( ...args );\n\t\t};\n\t\tselector.hasResolver = false;\n\t\treturn selector;\n\t};\n\n\treturn mapValues( selectors, createStateSelector );\n}\n\n/**\n * Maps actions to dispatch from a given store.\n *\n * @param {Object} actions Actions to register.\n * @param {Object} store The redux store to which the actions should be mapped.\n *\n * @return {Object} Actions mapped to the redux store provided.\n */\nfunction mapActions( actions, store ) {\n\tconst createBoundAction =\n\t\t( action ) =>\n\t\t( ...args ) => {\n\t\t\treturn Promise.resolve( store.dispatch( action( ...args ) ) );\n\t\t};\n\n\treturn mapValues( actions, createBoundAction );\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\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 * Returns resolvers with matched selectors for a given namespace.\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} resolvers Resolvers to register.\n * @param {Object} selectors The current selectors to be modified.\n * @param {Object} store The redux store to which the resolvers should be mapped.\n * @param {Object} resolversCache Resolvers Cache.\n */\nfunction mapResolvers( resolvers, selectors, store, resolversCache ) {\n\t// The `resolver` can be either a function that does the resolution, or, in more advanced\n\t// cases, an object with a `fullfill` method and other optional methods like `isFulfilled`.\n\t// Here we normalize the `resolver` function to an object with `fulfill` method.\n\tconst mappedResolvers = 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\tconst mapSelector = ( selector, selectorName ) => {\n\t\tconst resolver = resolvers[ selectorName ];\n\t\tif ( ! resolver ) {\n\t\t\tselector.hasResolver = false;\n\t\t\treturn selector;\n\t\t}\n\n\t\tconst selectorResolver = ( ...args ) => {\n\t\t\tasync function fulfillSelector() {\n\t\t\t\tconst state = store.getState();\n\n\t\t\t\tif (\n\t\t\t\t\tresolversCache.isRunning( selectorName, args ) ||\n\t\t\t\t\t( typeof resolver.isFulfilled === 'function' &&\n\t\t\t\t\t\tresolver.isFulfilled( state, ...args ) )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst { metadata } = store.__unstableOriginalGetState();\n\n\t\t\t\tif (\n\t\t\t\t\tmetadataSelectors.hasStartedResolution(\n\t\t\t\t\t\tmetadata,\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) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolversCache.markAsRunning( selectorName, args );\n\n\t\t\t\tsetTimeout( async () => {\n\t\t\t\t\tresolversCache.clear( selectorName, args );\n\t\t\t\t\tstore.dispatch(\n\t\t\t\t\t\tmetadataActions.startResolution( selectorName, args )\n\t\t\t\t\t);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait fulfillResolver(\n\t\t\t\t\t\t\tstore,\n\t\t\t\t\t\t\tmappedResolvers,\n\t\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\t\t...args\n\t\t\t\t\t\t);\n\t\t\t\t\t\tstore.dispatch(\n\t\t\t\t\t\t\tmetadataActions.finishResolution(\n\t\t\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\t\t\targs\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} catch ( error ) {\n\t\t\t\t\t\tstore.dispatch(\n\t\t\t\t\t\t\tmetadataActions.failResolution(\n\t\t\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\t\t\targs,\n\t\t\t\t\t\t\t\terror\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tfulfillSelector( ...args );\n\t\t\treturn selector( ...args );\n\t\t};\n\t\tselectorResolver.hasResolver = true;\n\t\treturn selectorResolver;\n\t};\n\n\treturn {\n\t\tresolvers: mappedResolvers,\n\t\tselectors: mapValues( selectors, mapSelector ),\n\t};\n}\n\n/**\n * Calls a resolver given arguments\n *\n * @param {Object} store Store reference, for fulfilling via resolvers\n * @param {Object} resolvers Store Resolvers\n * @param {string} selectorName Selector name to fulfill.\n * @param {Array} args Selector Arguments.\n */\nasync function fulfillResolver( store, resolvers, selectorName, ...args ) {\n\tconst resolver = resolvers[ selectorName ];\n\tif ( ! resolver ) {\n\t\treturn;\n\t}\n\n\tconst action = resolver.fulfill( ...args );\n\tif ( action ) {\n\t\tawait store.dispatch( action );\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/data/src/redux-store/index.js"],"names":["trimUndefinedValues","array","result","i","length","undefined","splice","mapValues","obj","callback","Object","entries","reduce","acc","key","value","mapToObject","state","Map","fromEntries","createResolversCache","cache","isRunning","selectorName","args","get","clear","delete","markAsRunning","EquivalentKeyMap","set","createReduxStore","options","privateActions","privateSelectors","privateRegistrationFunctions","registerPrivateActions","actions","assign","registerPrivateSelectors","selectors","storeDescriptor","name","instantiate","registry","reducer","thunkArgs","dispatch","action","store","getActions","select","selector","__unstableOriginalGetState","getSelectors","resolveSelect","getResolveSelectors","instantiateReduxStore","resolversCache","resolvers","mapActions","metadataActions","Proxy","target","prop","mapSelectors","metadataSelectors","metadata","isRegistrySelector","root","mapResolvers","resolveSelectors","mapResolveSelectors","suspendSelectors","mapSuspendSelectors","getSuspendSelectors","getState","subscribe","listener","lastState","hasChanged","controls","builtinControls","normalizedControls","control","isRegistryControl","middlewares","promise","enhancers","window","__REDUX_DEVTOOLS_EXTENSION__","push","instanceId","serialize","replacer","initialState","enhancedReducer","metadataReducer","createStateSelector","registrySelector","runSelector","argsLength","arguments","Array","hasResolver","createBoundAction","Promise","resolve","getIsResolving","hasStartedResolution","hasFinishedResolution","hasResolutionFailed","isResolving","getCachedResolvers","getResolutionState","getResolutionError","storeSelectors","apply","reject","hasFinished","finalize","hasFailed","error","getResult","unsubscribe","mappedResolvers","resolver","fulfill","mapSelector","selectorResolver","fulfillSelector","isFulfilled","setTimeout","startResolution","fulfillResolver","finishResolution","failResolution"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { createStore, applyMiddleware } from 'redux';\nimport combineReducers from 'turbo-combine-reducers';\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 { builtinControls } from '../controls';\nimport { lock } from '../private-apis';\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\n/** @typedef {import('../types').DataRegistry} DataRegistry */\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.entries( obj ?? {} ).reduce(\n\t\t( acc, [ key, value ] ) => ( {\n\t\t\t...acc,\n\t\t\t[ key ]: callback( value, key ),\n\t\t} ),\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\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\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 Object.assign(\n\t\t\t\t\t\t( action ) => store.dispatch( action ),\n\t\t\t\t\t\tgetActions()\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tget select() {\n\t\t\t\t\treturn Object.assign(\n\t\t\t\t\t\t( selector ) =>\n\t\t\t\t\t\t\tselector( store.__unstableOriginalGetState() ),\n\t\t\t\t\t\tgetSelectors()\n\t\t\t\t\t);\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\tlet resolvers;\n\t\t\tconst actions = mapActions(\n\t\t\t\t{\n\t\t\t\t\t...metadataActions,\n\t\t\t\t\t...options.actions,\n\t\t\t\t},\n\t\t\t\tstore\n\t\t\t);\n\t\t\tlock(\n\t\t\t\tactions,\n\t\t\t\tnew Proxy( privateActions, {\n\t\t\t\t\tget: ( target, prop ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tmapActions( privateActions, store )[ prop ] ||\n\t\t\t\t\t\t\tactions[ prop ]\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t} )\n\t\t\t);\n\n\t\t\tlet selectors = mapSelectors(\n\t\t\t\t{\n\t\t\t\t\t...mapValues(\n\t\t\t\t\t\tmetadataSelectors,\n\t\t\t\t\t\t( selector ) =>\n\t\t\t\t\t\t\t( state, ...args ) =>\n\t\t\t\t\t\t\t\tselector( state.metadata, ...args )\n\t\t\t\t\t),\n\t\t\t\t\t...mapValues( options.selectors, ( selector ) => {\n\t\t\t\t\t\tif ( selector.isRegistrySelector ) {\n\t\t\t\t\t\t\tselector.registry = registry;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn ( state, ...args ) =>\n\t\t\t\t\t\t\tselector( state.root, ...args );\n\t\t\t\t\t} ),\n\t\t\t\t},\n\t\t\t\tstore\n\t\t\t);\n\t\t\tlock(\n\t\t\t\tselectors,\n\t\t\t\tnew Proxy( privateSelectors, {\n\t\t\t\t\tget: ( target, prop ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\tmapSelectors(\n\t\t\t\t\t\t\t\tmapValues( privateSelectors, ( selector ) => {\n\t\t\t\t\t\t\t\t\tif ( selector.isRegistrySelector ) {\n\t\t\t\t\t\t\t\t\t\tselector.registry = registry;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturn ( state, ...args ) =>\n\t\t\t\t\t\t\t\t\t\tselector( state.root, ...args );\n\t\t\t\t\t\t\t\t} ),\n\t\t\t\t\t\t\t\tstore\n\t\t\t\t\t\t\t)[ prop ] || selectors[ prop ]\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t} )\n\t\t\t);\n\n\t\t\tif ( options.resolvers ) {\n\t\t\t\tconst result = mapResolvers(\n\t\t\t\t\toptions.resolvers,\n\t\t\t\t\tselectors,\n\t\t\t\t\tstore,\n\t\t\t\t\tresolversCache\n\t\t\t\t);\n\t\t\t\tresolvers = result.resolvers;\n\t\t\t\tselectors = result.selectors;\n\t\t\t}\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\tlet lastState = store.__unstableOriginalGetState();\n\t\t\t\t\treturn store.subscribe( () => {\n\t\t\t\t\t\tconst state = store.__unstableOriginalGetState();\n\t\t\t\t\t\tconst hasChanged = state !== lastState;\n\t\t\t\t\t\tlastState = state;\n\n\t\t\t\t\t\tif ( hasChanged ) {\n\t\t\t\t\t\t\tlistener();\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\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 a store.\n *\n * @param {Object} selectors Selectors to register. Keys will be used as the\n * public facing API. Selectors will get passed the\n * state as first argument.\n * @param {Object} store The store to which the selectors should be mapped.\n * @return {Object} Selectors mapped to the provided store.\n */\nfunction mapSelectors( selectors, store ) {\n\tconst createStateSelector = ( registrySelector ) => {\n\t\tconst selector = function runSelector() {\n\t\t\t// This function is an optimized implementation of:\n\t\t\t//\n\t\t\t// selector( store.getState(), ...arguments )\n\t\t\t//\n\t\t\t// Where the above would incur an `Array#concat` in its application,\n\t\t\t// the logic here instead efficiently constructs an arguments array via\n\t\t\t// direct assignment.\n\t\t\tconst argsLength = arguments.length;\n\t\t\tconst args = new Array( argsLength + 1 );\n\t\t\targs[ 0 ] = store.__unstableOriginalGetState();\n\t\t\tfor ( let i = 0; i < argsLength; i++ ) {\n\t\t\t\targs[ i + 1 ] = arguments[ i ];\n\t\t\t}\n\n\t\t\treturn registrySelector( ...args );\n\t\t};\n\t\tselector.hasResolver = false;\n\t\treturn selector;\n\t};\n\n\treturn mapValues( selectors, createStateSelector );\n}\n\n/**\n * Maps actions to dispatch from a given store.\n *\n * @param {Object} actions Actions to register.\n * @param {Object} store The redux store to which the actions should be mapped.\n *\n * @return {Object} Actions mapped to the redux store provided.\n */\nfunction mapActions( actions, store ) {\n\tconst createBoundAction =\n\t\t( action ) =>\n\t\t( ...args ) => {\n\t\t\treturn Promise.resolve( store.dispatch( action( ...args ) ) );\n\t\t};\n\n\treturn mapValues( actions, createBoundAction );\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\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 * Returns resolvers with matched selectors for a given namespace.\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} resolvers Resolvers to register.\n * @param {Object} selectors The current selectors to be modified.\n * @param {Object} store The redux store to which the resolvers should be mapped.\n * @param {Object} resolversCache Resolvers Cache.\n */\nfunction mapResolvers( resolvers, selectors, store, resolversCache ) {\n\t// The `resolver` can be either a function that does the resolution, or, in more advanced\n\t// cases, an object with a `fullfill` method and other optional methods like `isFulfilled`.\n\t// Here we normalize the `resolver` function to an object with `fulfill` method.\n\tconst mappedResolvers = 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\tconst mapSelector = ( selector, selectorName ) => {\n\t\tconst resolver = resolvers[ selectorName ];\n\t\tif ( ! resolver ) {\n\t\t\tselector.hasResolver = false;\n\t\t\treturn selector;\n\t\t}\n\n\t\tconst selectorResolver = ( ...args ) => {\n\t\t\tasync function fulfillSelector() {\n\t\t\t\tconst state = store.getState();\n\n\t\t\t\tif (\n\t\t\t\t\tresolversCache.isRunning( selectorName, args ) ||\n\t\t\t\t\t( typeof resolver.isFulfilled === 'function' &&\n\t\t\t\t\t\tresolver.isFulfilled( state, ...args ) )\n\t\t\t\t) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst { metadata } = store.__unstableOriginalGetState();\n\n\t\t\t\tif (\n\t\t\t\t\tmetadataSelectors.hasStartedResolution(\n\t\t\t\t\t\tmetadata,\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) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolversCache.markAsRunning( selectorName, args );\n\n\t\t\t\tsetTimeout( async () => {\n\t\t\t\t\tresolversCache.clear( selectorName, args );\n\t\t\t\t\tstore.dispatch(\n\t\t\t\t\t\tmetadataActions.startResolution( selectorName, args )\n\t\t\t\t\t);\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait fulfillResolver(\n\t\t\t\t\t\t\tstore,\n\t\t\t\t\t\t\tmappedResolvers,\n\t\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\t\t...args\n\t\t\t\t\t\t);\n\t\t\t\t\t\tstore.dispatch(\n\t\t\t\t\t\t\tmetadataActions.finishResolution(\n\t\t\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\t\t\targs\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} catch ( error ) {\n\t\t\t\t\t\tstore.dispatch(\n\t\t\t\t\t\t\tmetadataActions.failResolution(\n\t\t\t\t\t\t\t\tselectorName,\n\t\t\t\t\t\t\t\targs,\n\t\t\t\t\t\t\t\terror\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\tfulfillSelector( ...args );\n\t\t\treturn selector( ...args );\n\t\t};\n\t\tselectorResolver.hasResolver = true;\n\t\treturn selectorResolver;\n\t};\n\n\treturn {\n\t\tresolvers: mappedResolvers,\n\t\tselectors: mapValues( selectors, mapSelector ),\n\t};\n}\n\n/**\n * Calls a resolver given arguments\n *\n * @param {Object} store Store reference, for fulfilling via resolvers\n * @param {Object} resolvers Store Resolvers\n * @param {string} selectorName Selector name to fulfill.\n * @param {Array} args Selector Arguments.\n */\nasync function fulfillResolver( store, resolvers, selectorName, ...args ) {\n\tconst resolver = resolvers[ selectorName ];\n\tif ( ! resolver ) {\n\t\treturn;\n\t}\n\n\tconst action = resolver.fulfill( ...args );\n\tif ( action ) {\n\t\tawait store.dispatch( action );\n\t}\n}\n"]}
|
|
@@ -9,6 +9,7 @@ exports.getResolutionError = getResolutionError;
|
|
|
9
9
|
exports.getResolutionState = getResolutionState;
|
|
10
10
|
exports.hasFinishedResolution = hasFinishedResolution;
|
|
11
11
|
exports.hasResolutionFailed = hasResolutionFailed;
|
|
12
|
+
exports.hasResolvingSelectors = hasResolvingSelectors;
|
|
12
13
|
exports.hasStartedResolution = hasStartedResolution;
|
|
13
14
|
exports.isResolving = isResolving;
|
|
14
15
|
|
|
@@ -159,4 +160,28 @@ function isResolving(state, selectorName, args) {
|
|
|
159
160
|
function getCachedResolvers(state) {
|
|
160
161
|
return state;
|
|
161
162
|
}
|
|
163
|
+
/**
|
|
164
|
+
* Whether the store has any currently resolving selectors.
|
|
165
|
+
*
|
|
166
|
+
* @param {State} state Data state.
|
|
167
|
+
*
|
|
168
|
+
* @return {boolean} True if one or more selectors are resolving, false otherwise.
|
|
169
|
+
*/
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
function hasResolvingSelectors(state) {
|
|
173
|
+
return Object.values(state).some(selectorState =>
|
|
174
|
+
/**
|
|
175
|
+
* This uses the internal `_map` property of `EquivalentKeyMap` for
|
|
176
|
+
* optimization purposes, since the `EquivalentKeyMap` implementation
|
|
177
|
+
* does not support a `.values()` implementation.
|
|
178
|
+
*
|
|
179
|
+
* @see https://github.com/aduth/equivalent-key-map
|
|
180
|
+
*/
|
|
181
|
+
Array.from(selectorState._map.values()).some(resolution => {
|
|
182
|
+
var _resolution$;
|
|
183
|
+
|
|
184
|
+
return ((_resolution$ = resolution[1]) === null || _resolution$ === void 0 ? void 0 : _resolution$.status) === 'resolving';
|
|
185
|
+
}));
|
|
186
|
+
}
|
|
162
187
|
//# sourceMappingURL=selectors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/data/src/redux-store/metadata/selectors.js"],"names":["getResolutionState","state","selectorName","args","map","get","getIsResolving","resolutionState","status","hasStartedResolution","undefined","hasFinishedResolution","hasResolutionFailed","getResolutionError","error","isResolving","getCachedResolvers"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["@wordpress/data/src/redux-store/metadata/selectors.js"],"names":["getResolutionState","state","selectorName","args","map","get","getIsResolving","resolutionState","status","hasStartedResolution","undefined","hasFinishedResolution","hasResolutionFailed","getResolutionError","error","isResolving","getCachedResolvers","hasResolvingSelectors","Object","values","some","selectorState","Array","from","_map","resolution"],"mappings":"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","sourcesContent":["/**\n * Internal dependencies\n */\nimport { selectorArgsToStateKey } from './utils';\n\n/** @typedef {Record<string, import('./reducer').State>} State */\n/** @typedef {import('./reducer').StateValue} StateValue */\n/** @typedef {import('./reducer').Status} Status */\n\n/**\n * Returns the raw resolution state value for a given selector name,\n * and arguments set. May be undefined if the selector has never been resolved\n * or not resolved for the given set of arguments, otherwise true or false for\n * resolution started and completed respectively.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {StateValue|undefined} isResolving value.\n */\nexport function getResolutionState( state, selectorName, args ) {\n\tconst map = state[ selectorName ];\n\tif ( ! map ) {\n\t\treturn;\n\t}\n\n\treturn map.get( selectorArgsToStateKey( args ) );\n}\n\n/**\n * Returns the raw `isResolving` value for a given selector name,\n * and arguments set. May be undefined if the selector has never been resolved\n * or not resolved for the given set of arguments, otherwise true or false for\n * resolution started and completed respectively.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {boolean | undefined} isResolving value.\n */\nexport function getIsResolving( state, selectorName, args ) {\n\tconst resolutionState = getResolutionState( state, selectorName, args );\n\n\treturn resolutionState && resolutionState.status === 'resolving';\n}\n\n/**\n * Returns true if resolution has already been triggered for a given\n * selector name, and arguments set.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {boolean} Whether resolution has been triggered.\n */\nexport function hasStartedResolution( state, selectorName, args ) {\n\treturn getResolutionState( state, selectorName, args ) !== undefined;\n}\n\n/**\n * Returns true if resolution has completed for a given selector\n * name, and arguments set.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {boolean} Whether resolution has completed.\n */\nexport function hasFinishedResolution( state, selectorName, args ) {\n\tconst status = getResolutionState( state, selectorName, args )?.status;\n\treturn status === 'finished' || status === 'error';\n}\n\n/**\n * Returns true if resolution has failed for a given selector\n * name, and arguments set.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {boolean} Has resolution failed\n */\nexport function hasResolutionFailed( state, selectorName, args ) {\n\treturn getResolutionState( state, selectorName, args )?.status === 'error';\n}\n\n/**\n * Returns the resolution error for a given selector name, and arguments set.\n * Note it may be of an Error type, but may also be null, undefined, or anything else\n * that can be `throw`-n.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {Error|unknown} Last resolution error\n */\nexport function getResolutionError( state, selectorName, args ) {\n\tconst resolutionState = getResolutionState( state, selectorName, args );\n\treturn resolutionState?.status === 'error' ? resolutionState.error : null;\n}\n\n/**\n * Returns true if resolution has been triggered but has not yet completed for\n * a given selector name, and arguments set.\n *\n * @param {State} state Data state.\n * @param {string} selectorName Selector name.\n * @param {unknown[]?} args Arguments passed to selector.\n *\n * @return {boolean} Whether resolution is in progress.\n */\nexport function isResolving( state, selectorName, args ) {\n\treturn (\n\t\tgetResolutionState( state, selectorName, args )?.status === 'resolving'\n\t);\n}\n\n/**\n * Returns the list of the cached resolvers.\n *\n * @param {State} state Data state.\n *\n * @return {State} Resolvers mapped by args and selectorName.\n */\nexport function getCachedResolvers( state ) {\n\treturn state;\n}\n\n/**\n * Whether the store has any currently resolving selectors.\n *\n * @param {State} state Data state.\n *\n * @return {boolean} True if one or more selectors are resolving, false otherwise.\n */\nexport function hasResolvingSelectors( state ) {\n\treturn Object.values( state ).some( ( selectorState ) =>\n\t\t/**\n\t\t * This uses the internal `_map` property of `EquivalentKeyMap` for\n\t\t * optimization purposes, since the `EquivalentKeyMap` implementation\n\t\t * does not support a `.values()` implementation.\n\t\t *\n\t\t * @see https://github.com/aduth/equivalent-key-map\n\t\t */\n\t\tArray.from( selectorState._map.values() ).some(\n\t\t\t( resolution ) => resolution[ 1 ]?.status === 'resolving'\n\t\t)\n\t);\n}\n"]}
|
package/build/select.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.select = select;
|
|
9
|
+
|
|
10
|
+
var _defaultRegistry = _interopRequireDefault(require("./default-registry"));
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Internal dependencies
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Given a store descriptor, returns an object of the store's selectors.
|
|
18
|
+
* The selector functions are been pre-bound to pass the current state automatically.
|
|
19
|
+
* As a consumer, you need only pass arguments of the selector, if applicable.
|
|
20
|
+
*
|
|
21
|
+
*
|
|
22
|
+
* @param storeNameOrDescriptor The store descriptor. The legacy calling convention
|
|
23
|
+
* of passing the store name is also supported.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```js
|
|
27
|
+
* import { select } from '@wordpress/data';
|
|
28
|
+
* import { store as myCustomStore } from 'my-custom-store';
|
|
29
|
+
*
|
|
30
|
+
* select( myCustomStore ).getPrice( 'hammer' );
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @return Object containing the store's selectors.
|
|
34
|
+
*/
|
|
35
|
+
function select(storeNameOrDescriptor) {
|
|
36
|
+
return _defaultRegistry.default.select(storeNameOrDescriptor);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/data/src/select.ts"],"names":["select","storeNameOrDescriptor","defaultRegistry"],"mappings":";;;;;;;;;AAIA;;AAJA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,MAAT,CACNC,qBADM,EAEoB;AAC1B,SAAOC,yBAAgBF,MAAhB,CAAwBC,qBAAxB,CAAP;AACA","sourcesContent":["/**\n * Internal dependencies\n */\nimport type { AnyConfig, CurriedSelectorsOf, StoreDescriptor } from './types';\nimport defaultRegistry from './default-registry';\n\n/**\n * Given a store descriptor, returns an object of the store's selectors.\n * The selector functions are been pre-bound to pass the current state automatically.\n * As a consumer, you need only pass arguments of the selector, if applicable.\n *\n *\n * @param storeNameOrDescriptor The store descriptor. The legacy calling convention\n * of passing the store name is also supported.\n *\n * @example\n * ```js\n * import { select } from '@wordpress/data';\n * import { store as myCustomStore } from 'my-custom-store';\n *\n * select( myCustomStore ).getPrice( 'hammer' );\n * ```\n *\n * @return Object containing the store's selectors.\n */\nexport function select< T extends StoreDescriptor< AnyConfig > >(\n\tstoreNameOrDescriptor: string | T\n): CurriedSelectorsOf< T > {\n\treturn defaultRegistry.select( storeNameOrDescriptor );\n}\n"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal dependencies
|
|
3
|
+
*/
|
|
4
|
+
import defaultRegistry from './default-registry';
|
|
5
|
+
/**
|
|
6
|
+
* Given a store descriptor, returns an object of the store's action creators.
|
|
7
|
+
* Calling an action creator will cause it to be dispatched, updating the state value accordingly.
|
|
8
|
+
*
|
|
9
|
+
* Note: Action creators returned by the dispatch will return a promise when
|
|
10
|
+
* they are called.
|
|
11
|
+
*
|
|
12
|
+
* @param storeNameOrDescriptor The store descriptor. The legacy calling convention of passing
|
|
13
|
+
* the store name is also supported.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```js
|
|
17
|
+
* import { dispatch } from '@wordpress/data';
|
|
18
|
+
* import { store as myCustomStore } from 'my-custom-store';
|
|
19
|
+
*
|
|
20
|
+
* dispatch( myCustomStore ).setPrice( 'hammer', 9.75 );
|
|
21
|
+
* ```
|
|
22
|
+
* @return Object containing the action creators.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
export function dispatch(storeNameOrDescriptor) {
|
|
26
|
+
return defaultRegistry.dispatch(storeNameOrDescriptor);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=dispatch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/data/src/dispatch.ts"],"names":["defaultRegistry","dispatch","storeNameOrDescriptor"],"mappings":"AAAA;AACA;AACA;AAOA,OAAOA,eAAP,MAA4B,oBAA5B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASC,QAAT,CACNC,qBADM,EAE8B;AACpC,SAAOF,eAAe,CAACC,QAAhB,CAA0BC,qBAA1B,CAAP;AACA","sourcesContent":["/**\n * Internal dependencies\n */\nimport type {\n\tActionCreatorsOf,\n\tAnyConfig,\n\tConfigOf,\n\tStoreDescriptor,\n} from './types';\nimport defaultRegistry from './default-registry';\n\n/**\n * Given a store descriptor, returns an object of the store's action creators.\n * Calling an action creator will cause it to be dispatched, updating the state value accordingly.\n *\n * Note: Action creators returned by the dispatch will return a promise when\n * they are called.\n *\n * @param storeNameOrDescriptor The store descriptor. The legacy calling convention of passing\n * the store name is also supported.\n *\n * @example\n * ```js\n * import { dispatch } from '@wordpress/data';\n * import { store as myCustomStore } from 'my-custom-store';\n *\n * dispatch( myCustomStore ).setPrice( 'hammer', 9.75 );\n * ```\n * @return Object containing the action creators.\n */\nexport function dispatch< T extends StoreDescriptor< AnyConfig > >(\n\tstoreNameOrDescriptor: string | T\n): ActionCreatorsOf< ConfigOf< T > > {\n\treturn defaultRegistry.dispatch( storeNameOrDescriptor );\n}\n"]}
|