@wordpress/data 6.2.0 → 6.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/README.md +9 -3
- package/build/plugins/index.js +0 -8
- package/build/plugins/index.js.map +1 -1
- package/build/registry.js +4 -0
- package/build/registry.js.map +1 -1
- package/build-module/plugins/index.js +0 -1
- package/build-module/plugins/index.js.map +1 -1
- package/build-module/registry.js +4 -0
- package/build-module/registry.js.map +1 -1
- package/package.json +8 -9
- package/src/plugins/index.js +0 -1
- package/src/registry.js +4 -0
- package/build/plugins/controls/index.js +0 -24
- package/build/plugins/controls/index.js.map +0 -1
- package/build-module/plugins/controls/index.js +0 -12
- package/build-module/plugins/controls/index.js.map +0 -1
- package/src/plugins/controls/index.js +0 -12
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -139,7 +139,7 @@ A **control** defines the execution flow behavior associated with a specific act
|
|
|
139
139
|
|
|
140
140
|
The `controls` option should be passed as an object where each key is the name of the action type to act upon, the value a function which receives the original action object. It should returns either a promise which is to resolve when evaluation of the action should continue, or a value. The value or resolved promise value is assigned on the return value of the yield assignment. If the control handler returns undefined, the execution is not continued.
|
|
141
141
|
|
|
142
|
-
Refer to the [documentation of `@wordpress/redux-routine`](/packages/redux-routine/README.md) for more information.
|
|
142
|
+
Refer to the [documentation of `@wordpress/redux-routine`](https://github.com/WordPress/gutenberg/tree/HEAD/packages/redux-routine/README.md) for more information.
|
|
143
143
|
|
|
144
144
|
#### `initialState`
|
|
145
145
|
|
|
@@ -247,7 +247,7 @@ register( customStore );
|
|
|
247
247
|
|
|
248
248
|
The data module shares many of the same [core principles](https://redux.js.org/introduction/three-principles) and [API method naming](https://redux.js.org/api/api-reference) of [Redux](https://redux.js.org/). In fact, it is implemented atop Redux. Where it differs is in establishing a modularization pattern for creating separate but interdependent stores, and in codifying conventions such as selector functions as the primary entry point for data access.
|
|
249
249
|
|
|
250
|
-
The [higher-order components](#higher-order-components) were created to complement this distinction. The intention with splitting `withSelect` and `withDispatch` — where in React Redux they are combined under `connect` as `mapStateToProps` and `mapDispatchToProps` arguments — is to more accurately reflect that dispatch is not dependent upon a subscription to state changes, and to allow for state-derived values to be used in `withDispatch` (via [higher-order component composition](/packages/compose/README.md)).
|
|
250
|
+
The [higher-order components](#higher-order-components) were created to complement this distinction. The intention with splitting `withSelect` and `withDispatch` — where in React Redux they are combined under `connect` as `mapStateToProps` and `mapDispatchToProps` arguments — is to more accurately reflect that dispatch is not dependent upon a subscription to state changes, and to allow for state-derived values to be used in `withDispatch` (via [higher-order component composition](https://github.com/WordPress/gutenberg/tree/HEAD/packages/compose/README.md)).
|
|
251
251
|
|
|
252
252
|
The data module also has built-in solutions for handling asynchronous side-effects, through [resolvers](#resolvers) and [controls](#controls). These differ slightly from [standard redux async solutions](https://redux.js.org/advanced/async-actions) like [`redux-thunk`](https://github.com/gaearon/redux-thunk) or [`redux-saga`](https://redux-saga.js.org/).
|
|
253
253
|
|
|
@@ -1006,4 +1006,10 @@ function Component() {
|
|
|
1006
1006
|
|
|
1007
1007
|
- [What is WordPress Data?](https://unfoldingneurons.com/2020/what-is-wordpress-data/)
|
|
1008
1008
|
|
|
1009
|
-
|
|
1009
|
+
## Contributing to this package
|
|
1010
|
+
|
|
1011
|
+
This is an individual package that's part of the Gutenberg project. The project is organized as a monorepo. It's made up of multiple self-contained software packages, each with a specific purpose. The packages in this monorepo are published to [npm](https://www.npmjs.com/) and used by [WordPress](https://make.wordpress.org/core/) as well as other software projects.
|
|
1012
|
+
|
|
1013
|
+
To find out more about contributing to this package or Gutenberg as a whole, please read the project's main [contributor guide](https://github.com/WordPress/gutenberg/tree/HEAD/CONTRIBUTING.md).
|
|
1014
|
+
|
|
1015
|
+
<br /><br /><p align="center"><img src="https://s.w.org/style/images/codeispoetry.png?1" alt="Code is Poetry." /></p>
|
package/build/plugins/index.js
CHANGED
|
@@ -5,12 +5,6 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
Object.defineProperty(exports, "controls", {
|
|
9
|
-
enumerable: true,
|
|
10
|
-
get: function () {
|
|
11
|
-
return _controls.default;
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
8
|
Object.defineProperty(exports, "persistence", {
|
|
15
9
|
enumerable: true,
|
|
16
10
|
get: function () {
|
|
@@ -18,7 +12,5 @@ Object.defineProperty(exports, "persistence", {
|
|
|
18
12
|
}
|
|
19
13
|
});
|
|
20
14
|
|
|
21
|
-
var _controls = _interopRequireDefault(require("./controls"));
|
|
22
|
-
|
|
23
15
|
var _persistence = _interopRequireDefault(require("./persistence"));
|
|
24
16
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/data/src/plugins/index.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["@wordpress/data/src/plugins/index.js"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA","sourcesContent":["export { default as persistence } from './persistence';\n"]}
|
package/build/registry.js
CHANGED
package/build/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/data/src/registry.js"],"names":["createRegistry","storeConfigs","parent","stores","emitter","__experimentalListeningStores","Set","globalListener","emit","subscribe","listener","select","storeNameOrDescriptor","storeName","name","add","store","getSelectors","__experimentalMarkListeningStores","callback","ref","clear","result","call","current","Array","from","resolveSelect","getResolveSelectors","dispatch","getActions","withPlugins","attributes","attribute","key","registry","apply","arguments","registerStoreInstance","TypeError","currentSubscribe","unsubscribeFromEmitter","unsubscribeFromStore","isPaused","register","instantiate","registerGenericStore","since","alternative","registerStore","options","reducer","__experimentalSubscribeStore","handler","batch","pause","resume","namespaces","use","plugin","coreDataStore","config","Object","entries"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { mapValues, isObject, forEach } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport createReduxStore from './redux-store';\nimport coreDataStore from './store';\nimport { createEmitter } from './utils/emitter';\n\n/** @typedef {import('./types').StoreDescriptor} StoreDescriptor */\n\n/**\n * @typedef {Object} WPDataRegistry An isolated orchestrator of store registrations.\n *\n * @property {Function} registerGenericStore Given a namespace key and settings\n * object, registers a new generic\n * store.\n * @property {Function} registerStore Given a namespace key and settings\n * object, registers a new namespace\n * store.\n * @property {Function} subscribe Given a function callback, invokes\n * the callback on any change to state\n * within any registered store.\n * @property {Function} select Given a namespace key, returns an\n * object of the store's registered\n * selectors.\n * @property {Function} dispatch Given a namespace key, returns an\n * object of the store's registered\n * action dispatchers.\n */\n\n/**\n * @typedef {Object} WPDataPlugin An object of registry function overrides.\n *\n * @property {Function} registerStore registers store.\n */\n\n/**\n * Creates a new store registry, given an optional object of initial store\n * configurations.\n *\n * @param {Object} storeConfigs Initial store configurations.\n * @param {Object?} parent Parent registry.\n *\n * @return {WPDataRegistry} Data registry.\n */\nexport function createRegistry( storeConfigs = {}, parent = null ) {\n\tconst stores = {};\n\tconst emitter = createEmitter();\n\tconst __experimentalListeningStores = new Set();\n\n\t/**\n\t * Global listener called for each store's update.\n\t */\n\tfunction globalListener() {\n\t\temitter.emit();\n\t}\n\n\t/**\n\t * Subscribe to changes to any data.\n\t *\n\t * @param {Function} listener Listener function.\n\t *\n\t * @return {Function} Unsubscribe function.\n\t */\n\tconst subscribe = ( listener ) => {\n\t\treturn emitter.subscribe( listener );\n\t};\n\n\t/**\n\t * Calls a selector given the current state and extra arguments.\n\t *\n\t * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store\n\t * or the store descriptor.\n\t *\n\t * @return {*} The selector's returned value.\n\t */\n\tfunction select( storeNameOrDescriptor ) {\n\t\tconst storeName = isObject( storeNameOrDescriptor )\n\t\t\t? storeNameOrDescriptor.name\n\t\t\t: storeNameOrDescriptor;\n\t\t__experimentalListeningStores.add( storeName );\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getSelectors();\n\t\t}\n\n\t\treturn parent && parent.select( storeName );\n\t}\n\n\tfunction __experimentalMarkListeningStores( callback, ref ) {\n\t\t__experimentalListeningStores.clear();\n\t\tconst result = callback.call( this );\n\t\tref.current = Array.from( __experimentalListeningStores );\n\t\treturn result;\n\t}\n\n\t/**\n\t * Given the name of a registered store, returns an object containing the store's\n\t * selectors pre-bound to state so that you only need to supply additional arguments,\n\t * and modified so that they return promises that resolve to their eventual values,\n\t * after any resolvers have ran.\n\t *\n\t * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store\n\t * or the store descriptor.\n\t *\n\t * @return {Object} Each key of the object matches the name of a selector.\n\t */\n\tfunction resolveSelect( storeNameOrDescriptor ) {\n\t\tconst storeName = isObject( storeNameOrDescriptor )\n\t\t\t? storeNameOrDescriptor.name\n\t\t\t: storeNameOrDescriptor;\n\t\t__experimentalListeningStores.add( storeName );\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getResolveSelectors();\n\t\t}\n\n\t\treturn parent && parent.resolveSelect( storeName );\n\t}\n\n\t/**\n\t * Returns the available actions for a part of the state.\n\t *\n\t * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store\n\t * or the store descriptor.\n\t *\n\t * @return {*} The action's returned value.\n\t */\n\tfunction dispatch( storeNameOrDescriptor ) {\n\t\tconst storeName = isObject( storeNameOrDescriptor )\n\t\t\t? storeNameOrDescriptor.name\n\t\t\t: storeNameOrDescriptor;\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getActions();\n\t\t}\n\n\t\treturn parent && parent.dispatch( storeName );\n\t}\n\n\t//\n\t// Deprecated\n\t// TODO: Remove this after `use()` is removed.\n\t//\n\tfunction withPlugins( attributes ) {\n\t\treturn mapValues( attributes, ( attribute, key ) => {\n\t\t\tif ( typeof attribute !== 'function' ) {\n\t\t\t\treturn attribute;\n\t\t\t}\n\t\t\treturn function () {\n\t\t\t\treturn registry[ key ].apply( null, arguments );\n\t\t\t};\n\t\t} );\n\t}\n\n\t/**\n\t * Registers a store instance.\n\t *\n\t * @param {string} name Store registry name.\n\t * @param {Object} store Store instance object (getSelectors, getActions, subscribe).\n\t */\n\tfunction registerStoreInstance( name, store ) {\n\t\tif ( typeof store.getSelectors !== 'function' ) {\n\t\t\tthrow new TypeError( 'store.getSelectors must be a function' );\n\t\t}\n\t\tif ( typeof store.getActions !== 'function' ) {\n\t\t\tthrow new TypeError( 'store.getActions must be a function' );\n\t\t}\n\t\tif ( typeof store.subscribe !== 'function' ) {\n\t\t\tthrow new TypeError( 'store.subscribe must be a function' );\n\t\t}\n\t\t// The emitter is used to keep track of active listeners when the registry\n\t\t// get paused, that way, when resumed we should be able to call all these\n\t\t// pending listeners.\n\t\tstore.emitter = createEmitter();\n\t\tconst currentSubscribe = store.subscribe;\n\t\tstore.subscribe = ( listener ) => {\n\t\t\tconst unsubscribeFromEmitter = store.emitter.subscribe( listener );\n\t\t\tconst unsubscribeFromStore = currentSubscribe( () => {\n\t\t\t\tif ( store.emitter.isPaused ) {\n\t\t\t\t\tstore.emitter.emit();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlistener();\n\t\t\t} );\n\n\t\t\treturn () => {\n\t\t\t\tunsubscribeFromStore?.();\n\t\t\t\tunsubscribeFromEmitter?.();\n\t\t\t};\n\t\t};\n\t\tstores[ name ] = store;\n\t\tstore.subscribe( globalListener );\n\t}\n\n\t/**\n\t * Registers a new store given a store descriptor.\n\t *\n\t * @param {StoreDescriptor} store Store descriptor.\n\t */\n\tfunction register( store ) {\n\t\tregisterStoreInstance( store.name, store.instantiate( registry ) );\n\t}\n\n\tfunction registerGenericStore( name, store ) {\n\t\tdeprecated( 'wp.data.registerGenericStore', {\n\t\t\tsince: '5.9',\n\t\t\talternative: 'wp.data.register( storeDescriptor )',\n\t\t} );\n\t\tregisterStoreInstance( name, store );\n\t}\n\n\t/**\n\t * Registers a standard `@wordpress/data` store.\n\t *\n\t * @param {string} storeName Unique namespace identifier.\n\t * @param {Object} options Store description (reducer, actions, selectors, resolvers).\n\t *\n\t * @return {Object} Registered store object.\n\t */\n\tfunction registerStore( storeName, options ) {\n\t\tif ( ! options.reducer ) {\n\t\t\tthrow new TypeError( 'Must specify store reducer' );\n\t\t}\n\n\t\tconst store = createReduxStore( storeName, options ).instantiate(\n\t\t\tregistry\n\t\t);\n\t\tregisterStoreInstance( storeName, store );\n\t\treturn store.store;\n\t}\n\n\t/**\n\t * Subscribe handler to a store.\n\t *\n\t * @param {string[]} storeName The store name.\n\t * @param {Function} handler The function subscribed to the store.\n\t * @return {Function} A function to unsubscribe the handler.\n\t */\n\tfunction __experimentalSubscribeStore( storeName, handler ) {\n\t\tif ( storeName in stores ) {\n\t\t\treturn stores[ storeName ].subscribe( handler );\n\t\t}\n\n\t\t// Trying to access a store that hasn't been registered,\n\t\t// this is a pattern rarely used but seen in some places.\n\t\t// We fallback to regular `subscribe` here for backward-compatibility for now.\n\t\t// See https://github.com/WordPress/gutenberg/pull/27466 for more info.\n\t\tif ( ! parent ) {\n\t\t\treturn subscribe( handler );\n\t\t}\n\n\t\treturn parent.__experimentalSubscribeStore( storeName, handler );\n\t}\n\n\tfunction batch( callback ) {\n\t\temitter.pause();\n\t\tforEach( stores, ( store ) => store.emitter.pause() );\n\t\tcallback();\n\t\temitter.resume();\n\t\tforEach( stores, ( store ) => store.emitter.resume() );\n\t}\n\n\tlet registry = {\n\t\tbatch,\n\t\tstores,\n\t\tnamespaces: stores, // TODO: Deprecate/remove this.\n\t\tsubscribe,\n\t\tselect,\n\t\tresolveSelect,\n\t\tdispatch,\n\t\tuse,\n\t\tregister,\n\t\tregisterGenericStore,\n\t\tregisterStore,\n\t\t__experimentalMarkListeningStores,\n\t\t__experimentalSubscribeStore,\n\t};\n\n\t//\n\t// TODO:\n\t// This function will be deprecated as soon as it is no longer internally referenced.\n\t//\n\tfunction use( plugin, options ) {\n\t\tregistry = {\n\t\t\t...registry,\n\t\t\t...plugin( registry, options ),\n\t\t};\n\n\t\treturn registry;\n\t}\n\n\tregistry.register( coreDataStore );\n\n\tfor ( const [ name, config ] of Object.entries( storeConfigs ) ) {\n\t\tregistry.register( createReduxStore( name, config ) );\n\t}\n\n\tif ( parent ) {\n\t\tparent.subscribe( globalListener );\n\t}\n\n\treturn withPlugins( registry );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/data/src/registry.js"],"names":["createRegistry","storeConfigs","parent","stores","emitter","__experimentalListeningStores","Set","globalListener","emit","subscribe","listener","select","storeNameOrDescriptor","storeName","name","add","store","getSelectors","__experimentalMarkListeningStores","callback","ref","clear","result","call","current","Array","from","resolveSelect","getResolveSelectors","dispatch","getActions","withPlugins","attributes","attribute","key","registry","apply","arguments","registerStoreInstance","TypeError","currentSubscribe","unsubscribeFromEmitter","unsubscribeFromStore","isPaused","register","instantiate","registerGenericStore","since","alternative","registerStore","options","reducer","__experimentalSubscribeStore","handler","batch","pause","resume","namespaces","use","plugin","coreDataStore","config","Object","entries"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { mapValues, isObject, forEach } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport createReduxStore from './redux-store';\nimport coreDataStore from './store';\nimport { createEmitter } from './utils/emitter';\n\n/** @typedef {import('./types').StoreDescriptor} StoreDescriptor */\n\n/**\n * @typedef {Object} WPDataRegistry An isolated orchestrator of store registrations.\n *\n * @property {Function} registerGenericStore Given a namespace key and settings\n * object, registers a new generic\n * store.\n * @property {Function} registerStore Given a namespace key and settings\n * object, registers a new namespace\n * store.\n * @property {Function} subscribe Given a function callback, invokes\n * the callback on any change to state\n * within any registered store.\n * @property {Function} select Given a namespace key, returns an\n * object of the store's registered\n * selectors.\n * @property {Function} dispatch Given a namespace key, returns an\n * object of the store's registered\n * action dispatchers.\n */\n\n/**\n * @typedef {Object} WPDataPlugin An object of registry function overrides.\n *\n * @property {Function} registerStore registers store.\n */\n\n/**\n * Creates a new store registry, given an optional object of initial store\n * configurations.\n *\n * @param {Object} storeConfigs Initial store configurations.\n * @param {Object?} parent Parent registry.\n *\n * @return {WPDataRegistry} Data registry.\n */\nexport function createRegistry( storeConfigs = {}, parent = null ) {\n\tconst stores = {};\n\tconst emitter = createEmitter();\n\tconst __experimentalListeningStores = new Set();\n\n\t/**\n\t * Global listener called for each store's update.\n\t */\n\tfunction globalListener() {\n\t\temitter.emit();\n\t}\n\n\t/**\n\t * Subscribe to changes to any data.\n\t *\n\t * @param {Function} listener Listener function.\n\t *\n\t * @return {Function} Unsubscribe function.\n\t */\n\tconst subscribe = ( listener ) => {\n\t\treturn emitter.subscribe( listener );\n\t};\n\n\t/**\n\t * Calls a selector given the current state and extra arguments.\n\t *\n\t * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store\n\t * or the store descriptor.\n\t *\n\t * @return {*} The selector's returned value.\n\t */\n\tfunction select( storeNameOrDescriptor ) {\n\t\tconst storeName = isObject( storeNameOrDescriptor )\n\t\t\t? storeNameOrDescriptor.name\n\t\t\t: storeNameOrDescriptor;\n\t\t__experimentalListeningStores.add( storeName );\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getSelectors();\n\t\t}\n\n\t\treturn parent && parent.select( storeName );\n\t}\n\n\tfunction __experimentalMarkListeningStores( callback, ref ) {\n\t\t__experimentalListeningStores.clear();\n\t\tconst result = callback.call( this );\n\t\tref.current = Array.from( __experimentalListeningStores );\n\t\treturn result;\n\t}\n\n\t/**\n\t * Given the name of a registered store, returns an object containing the store's\n\t * selectors pre-bound to state so that you only need to supply additional arguments,\n\t * and modified so that they return promises that resolve to their eventual values,\n\t * after any resolvers have ran.\n\t *\n\t * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store\n\t * or the store descriptor.\n\t *\n\t * @return {Object} Each key of the object matches the name of a selector.\n\t */\n\tfunction resolveSelect( storeNameOrDescriptor ) {\n\t\tconst storeName = isObject( storeNameOrDescriptor )\n\t\t\t? storeNameOrDescriptor.name\n\t\t\t: storeNameOrDescriptor;\n\t\t__experimentalListeningStores.add( storeName );\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getResolveSelectors();\n\t\t}\n\n\t\treturn parent && parent.resolveSelect( storeName );\n\t}\n\n\t/**\n\t * Returns the available actions for a part of the state.\n\t *\n\t * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store\n\t * or the store descriptor.\n\t *\n\t * @return {*} The action's returned value.\n\t */\n\tfunction dispatch( storeNameOrDescriptor ) {\n\t\tconst storeName = isObject( storeNameOrDescriptor )\n\t\t\t? storeNameOrDescriptor.name\n\t\t\t: storeNameOrDescriptor;\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getActions();\n\t\t}\n\n\t\treturn parent && parent.dispatch( storeName );\n\t}\n\n\t//\n\t// Deprecated\n\t// TODO: Remove this after `use()` is removed.\n\t//\n\tfunction withPlugins( attributes ) {\n\t\treturn mapValues( attributes, ( attribute, key ) => {\n\t\t\tif ( typeof attribute !== 'function' ) {\n\t\t\t\treturn attribute;\n\t\t\t}\n\t\t\treturn function () {\n\t\t\t\treturn registry[ key ].apply( null, arguments );\n\t\t\t};\n\t\t} );\n\t}\n\n\t/**\n\t * Registers a store instance.\n\t *\n\t * @param {string} name Store registry name.\n\t * @param {Object} store Store instance object (getSelectors, getActions, subscribe).\n\t */\n\tfunction registerStoreInstance( name, store ) {\n\t\tif ( typeof store.getSelectors !== 'function' ) {\n\t\t\tthrow new TypeError( 'store.getSelectors must be a function' );\n\t\t}\n\t\tif ( typeof store.getActions !== 'function' ) {\n\t\t\tthrow new TypeError( 'store.getActions must be a function' );\n\t\t}\n\t\tif ( typeof store.subscribe !== 'function' ) {\n\t\t\tthrow new TypeError( 'store.subscribe must be a function' );\n\t\t}\n\t\t// The emitter is used to keep track of active listeners when the registry\n\t\t// get paused, that way, when resumed we should be able to call all these\n\t\t// pending listeners.\n\t\tstore.emitter = createEmitter();\n\t\tconst currentSubscribe = store.subscribe;\n\t\tstore.subscribe = ( listener ) => {\n\t\t\tconst unsubscribeFromEmitter = store.emitter.subscribe( listener );\n\t\t\tconst unsubscribeFromStore = currentSubscribe( () => {\n\t\t\t\tif ( store.emitter.isPaused ) {\n\t\t\t\t\tstore.emitter.emit();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlistener();\n\t\t\t} );\n\n\t\t\treturn () => {\n\t\t\t\tunsubscribeFromStore?.();\n\t\t\t\tunsubscribeFromEmitter?.();\n\t\t\t};\n\t\t};\n\t\tstores[ name ] = store;\n\t\tstore.subscribe( globalListener );\n\t}\n\n\t/**\n\t * Registers a new store given a store descriptor.\n\t *\n\t * @param {StoreDescriptor} store Store descriptor.\n\t */\n\tfunction register( store ) {\n\t\tregisterStoreInstance( store.name, store.instantiate( registry ) );\n\t}\n\n\tfunction registerGenericStore( name, store ) {\n\t\tdeprecated( 'wp.data.registerGenericStore', {\n\t\t\tsince: '5.9',\n\t\t\talternative: 'wp.data.register( storeDescriptor )',\n\t\t} );\n\t\tregisterStoreInstance( name, store );\n\t}\n\n\t/**\n\t * Registers a standard `@wordpress/data` store.\n\t *\n\t * @param {string} storeName Unique namespace identifier.\n\t * @param {Object} options Store description (reducer, actions, selectors, resolvers).\n\t *\n\t * @return {Object} Registered store object.\n\t */\n\tfunction registerStore( storeName, options ) {\n\t\tif ( ! options.reducer ) {\n\t\t\tthrow new TypeError( 'Must specify store reducer' );\n\t\t}\n\n\t\tconst store = createReduxStore( storeName, options ).instantiate(\n\t\t\tregistry\n\t\t);\n\t\tregisterStoreInstance( storeName, store );\n\t\treturn store.store;\n\t}\n\n\t/**\n\t * Subscribe handler to a store.\n\t *\n\t * @param {string[]} storeName The store name.\n\t * @param {Function} handler The function subscribed to the store.\n\t * @return {Function} A function to unsubscribe the handler.\n\t */\n\tfunction __experimentalSubscribeStore( storeName, handler ) {\n\t\tif ( storeName in stores ) {\n\t\t\treturn stores[ storeName ].subscribe( handler );\n\t\t}\n\n\t\t// Trying to access a store that hasn't been registered,\n\t\t// this is a pattern rarely used but seen in some places.\n\t\t// We fallback to regular `subscribe` here for backward-compatibility for now.\n\t\t// See https://github.com/WordPress/gutenberg/pull/27466 for more info.\n\t\tif ( ! parent ) {\n\t\t\treturn subscribe( handler );\n\t\t}\n\n\t\treturn parent.__experimentalSubscribeStore( storeName, handler );\n\t}\n\n\tfunction batch( callback ) {\n\t\temitter.pause();\n\t\tforEach( stores, ( store ) => store.emitter.pause() );\n\t\tcallback();\n\t\temitter.resume();\n\t\tforEach( stores, ( store ) => store.emitter.resume() );\n\t}\n\n\tlet registry = {\n\t\tbatch,\n\t\tstores,\n\t\tnamespaces: stores, // TODO: Deprecate/remove this.\n\t\tsubscribe,\n\t\tselect,\n\t\tresolveSelect,\n\t\tdispatch,\n\t\tuse,\n\t\tregister,\n\t\tregisterGenericStore,\n\t\tregisterStore,\n\t\t__experimentalMarkListeningStores,\n\t\t__experimentalSubscribeStore,\n\t};\n\n\t//\n\t// TODO:\n\t// This function will be deprecated as soon as it is no longer internally referenced.\n\t//\n\tfunction use( plugin, options ) {\n\t\tif ( ! plugin ) {\n\t\t\treturn;\n\t\t}\n\n\t\tregistry = {\n\t\t\t...registry,\n\t\t\t...plugin( registry, options ),\n\t\t};\n\n\t\treturn registry;\n\t}\n\n\tregistry.register( coreDataStore );\n\n\tfor ( const [ name, config ] of Object.entries( storeConfigs ) ) {\n\t\tregistry.register( createReduxStore( name, config ) );\n\t}\n\n\tif ( parent ) {\n\t\tparent.subscribe( globalListener );\n\t}\n\n\treturn withPlugins( registry );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/data/src/plugins/index.js"],"names":["default","
|
|
1
|
+
{"version":3,"sources":["@wordpress/data/src/plugins/index.js"],"names":["default","persistence"],"mappings":"AAAA,SAASA,OAAO,IAAIC,WAApB,QAAuC,eAAvC","sourcesContent":["export { default as persistence } from './persistence';\n"]}
|
package/build-module/registry.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/data/src/registry.js"],"names":["mapValues","isObject","forEach","deprecated","createReduxStore","coreDataStore","createEmitter","createRegistry","storeConfigs","parent","stores","emitter","__experimentalListeningStores","Set","globalListener","emit","subscribe","listener","select","storeNameOrDescriptor","storeName","name","add","store","getSelectors","__experimentalMarkListeningStores","callback","ref","clear","result","call","current","Array","from","resolveSelect","getResolveSelectors","dispatch","getActions","withPlugins","attributes","attribute","key","registry","apply","arguments","registerStoreInstance","TypeError","currentSubscribe","unsubscribeFromEmitter","unsubscribeFromStore","isPaused","register","instantiate","registerGenericStore","since","alternative","registerStore","options","reducer","__experimentalSubscribeStore","handler","batch","pause","resume","namespaces","use","plugin","config","Object","entries"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { mapValues, isObject, forEach } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport createReduxStore from './redux-store';\nimport coreDataStore from './store';\nimport { createEmitter } from './utils/emitter';\n\n/** @typedef {import('./types').StoreDescriptor} StoreDescriptor */\n\n/**\n * @typedef {Object} WPDataRegistry An isolated orchestrator of store registrations.\n *\n * @property {Function} registerGenericStore Given a namespace key and settings\n * object, registers a new generic\n * store.\n * @property {Function} registerStore Given a namespace key and settings\n * object, registers a new namespace\n * store.\n * @property {Function} subscribe Given a function callback, invokes\n * the callback on any change to state\n * within any registered store.\n * @property {Function} select Given a namespace key, returns an\n * object of the store's registered\n * selectors.\n * @property {Function} dispatch Given a namespace key, returns an\n * object of the store's registered\n * action dispatchers.\n */\n\n/**\n * @typedef {Object} WPDataPlugin An object of registry function overrides.\n *\n * @property {Function} registerStore registers store.\n */\n\n/**\n * Creates a new store registry, given an optional object of initial store\n * configurations.\n *\n * @param {Object} storeConfigs Initial store configurations.\n * @param {Object?} parent Parent registry.\n *\n * @return {WPDataRegistry} Data registry.\n */\nexport function createRegistry( storeConfigs = {}, parent = null ) {\n\tconst stores = {};\n\tconst emitter = createEmitter();\n\tconst __experimentalListeningStores = new Set();\n\n\t/**\n\t * Global listener called for each store's update.\n\t */\n\tfunction globalListener() {\n\t\temitter.emit();\n\t}\n\n\t/**\n\t * Subscribe to changes to any data.\n\t *\n\t * @param {Function} listener Listener function.\n\t *\n\t * @return {Function} Unsubscribe function.\n\t */\n\tconst subscribe = ( listener ) => {\n\t\treturn emitter.subscribe( listener );\n\t};\n\n\t/**\n\t * Calls a selector given the current state and extra arguments.\n\t *\n\t * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store\n\t * or the store descriptor.\n\t *\n\t * @return {*} The selector's returned value.\n\t */\n\tfunction select( storeNameOrDescriptor ) {\n\t\tconst storeName = isObject( storeNameOrDescriptor )\n\t\t\t? storeNameOrDescriptor.name\n\t\t\t: storeNameOrDescriptor;\n\t\t__experimentalListeningStores.add( storeName );\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getSelectors();\n\t\t}\n\n\t\treturn parent && parent.select( storeName );\n\t}\n\n\tfunction __experimentalMarkListeningStores( callback, ref ) {\n\t\t__experimentalListeningStores.clear();\n\t\tconst result = callback.call( this );\n\t\tref.current = Array.from( __experimentalListeningStores );\n\t\treturn result;\n\t}\n\n\t/**\n\t * Given the name of a registered store, returns an object containing the store's\n\t * selectors pre-bound to state so that you only need to supply additional arguments,\n\t * and modified so that they return promises that resolve to their eventual values,\n\t * after any resolvers have ran.\n\t *\n\t * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store\n\t * or the store descriptor.\n\t *\n\t * @return {Object} Each key of the object matches the name of a selector.\n\t */\n\tfunction resolveSelect( storeNameOrDescriptor ) {\n\t\tconst storeName = isObject( storeNameOrDescriptor )\n\t\t\t? storeNameOrDescriptor.name\n\t\t\t: storeNameOrDescriptor;\n\t\t__experimentalListeningStores.add( storeName );\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getResolveSelectors();\n\t\t}\n\n\t\treturn parent && parent.resolveSelect( storeName );\n\t}\n\n\t/**\n\t * Returns the available actions for a part of the state.\n\t *\n\t * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store\n\t * or the store descriptor.\n\t *\n\t * @return {*} The action's returned value.\n\t */\n\tfunction dispatch( storeNameOrDescriptor ) {\n\t\tconst storeName = isObject( storeNameOrDescriptor )\n\t\t\t? storeNameOrDescriptor.name\n\t\t\t: storeNameOrDescriptor;\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getActions();\n\t\t}\n\n\t\treturn parent && parent.dispatch( storeName );\n\t}\n\n\t//\n\t// Deprecated\n\t// TODO: Remove this after `use()` is removed.\n\t//\n\tfunction withPlugins( attributes ) {\n\t\treturn mapValues( attributes, ( attribute, key ) => {\n\t\t\tif ( typeof attribute !== 'function' ) {\n\t\t\t\treturn attribute;\n\t\t\t}\n\t\t\treturn function () {\n\t\t\t\treturn registry[ key ].apply( null, arguments );\n\t\t\t};\n\t\t} );\n\t}\n\n\t/**\n\t * Registers a store instance.\n\t *\n\t * @param {string} name Store registry name.\n\t * @param {Object} store Store instance object (getSelectors, getActions, subscribe).\n\t */\n\tfunction registerStoreInstance( name, store ) {\n\t\tif ( typeof store.getSelectors !== 'function' ) {\n\t\t\tthrow new TypeError( 'store.getSelectors must be a function' );\n\t\t}\n\t\tif ( typeof store.getActions !== 'function' ) {\n\t\t\tthrow new TypeError( 'store.getActions must be a function' );\n\t\t}\n\t\tif ( typeof store.subscribe !== 'function' ) {\n\t\t\tthrow new TypeError( 'store.subscribe must be a function' );\n\t\t}\n\t\t// The emitter is used to keep track of active listeners when the registry\n\t\t// get paused, that way, when resumed we should be able to call all these\n\t\t// pending listeners.\n\t\tstore.emitter = createEmitter();\n\t\tconst currentSubscribe = store.subscribe;\n\t\tstore.subscribe = ( listener ) => {\n\t\t\tconst unsubscribeFromEmitter = store.emitter.subscribe( listener );\n\t\t\tconst unsubscribeFromStore = currentSubscribe( () => {\n\t\t\t\tif ( store.emitter.isPaused ) {\n\t\t\t\t\tstore.emitter.emit();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlistener();\n\t\t\t} );\n\n\t\t\treturn () => {\n\t\t\t\tunsubscribeFromStore?.();\n\t\t\t\tunsubscribeFromEmitter?.();\n\t\t\t};\n\t\t};\n\t\tstores[ name ] = store;\n\t\tstore.subscribe( globalListener );\n\t}\n\n\t/**\n\t * Registers a new store given a store descriptor.\n\t *\n\t * @param {StoreDescriptor} store Store descriptor.\n\t */\n\tfunction register( store ) {\n\t\tregisterStoreInstance( store.name, store.instantiate( registry ) );\n\t}\n\n\tfunction registerGenericStore( name, store ) {\n\t\tdeprecated( 'wp.data.registerGenericStore', {\n\t\t\tsince: '5.9',\n\t\t\talternative: 'wp.data.register( storeDescriptor )',\n\t\t} );\n\t\tregisterStoreInstance( name, store );\n\t}\n\n\t/**\n\t * Registers a standard `@wordpress/data` store.\n\t *\n\t * @param {string} storeName Unique namespace identifier.\n\t * @param {Object} options Store description (reducer, actions, selectors, resolvers).\n\t *\n\t * @return {Object} Registered store object.\n\t */\n\tfunction registerStore( storeName, options ) {\n\t\tif ( ! options.reducer ) {\n\t\t\tthrow new TypeError( 'Must specify store reducer' );\n\t\t}\n\n\t\tconst store = createReduxStore( storeName, options ).instantiate(\n\t\t\tregistry\n\t\t);\n\t\tregisterStoreInstance( storeName, store );\n\t\treturn store.store;\n\t}\n\n\t/**\n\t * Subscribe handler to a store.\n\t *\n\t * @param {string[]} storeName The store name.\n\t * @param {Function} handler The function subscribed to the store.\n\t * @return {Function} A function to unsubscribe the handler.\n\t */\n\tfunction __experimentalSubscribeStore( storeName, handler ) {\n\t\tif ( storeName in stores ) {\n\t\t\treturn stores[ storeName ].subscribe( handler );\n\t\t}\n\n\t\t// Trying to access a store that hasn't been registered,\n\t\t// this is a pattern rarely used but seen in some places.\n\t\t// We fallback to regular `subscribe` here for backward-compatibility for now.\n\t\t// See https://github.com/WordPress/gutenberg/pull/27466 for more info.\n\t\tif ( ! parent ) {\n\t\t\treturn subscribe( handler );\n\t\t}\n\n\t\treturn parent.__experimentalSubscribeStore( storeName, handler );\n\t}\n\n\tfunction batch( callback ) {\n\t\temitter.pause();\n\t\tforEach( stores, ( store ) => store.emitter.pause() );\n\t\tcallback();\n\t\temitter.resume();\n\t\tforEach( stores, ( store ) => store.emitter.resume() );\n\t}\n\n\tlet registry = {\n\t\tbatch,\n\t\tstores,\n\t\tnamespaces: stores, // TODO: Deprecate/remove this.\n\t\tsubscribe,\n\t\tselect,\n\t\tresolveSelect,\n\t\tdispatch,\n\t\tuse,\n\t\tregister,\n\t\tregisterGenericStore,\n\t\tregisterStore,\n\t\t__experimentalMarkListeningStores,\n\t\t__experimentalSubscribeStore,\n\t};\n\n\t//\n\t// TODO:\n\t// This function will be deprecated as soon as it is no longer internally referenced.\n\t//\n\tfunction use( plugin, options ) {\n\t\tregistry = {\n\t\t\t...registry,\n\t\t\t...plugin( registry, options ),\n\t\t};\n\n\t\treturn registry;\n\t}\n\n\tregistry.register( coreDataStore );\n\n\tfor ( const [ name, config ] of Object.entries( storeConfigs ) ) {\n\t\tregistry.register( createReduxStore( name, config ) );\n\t}\n\n\tif ( parent ) {\n\t\tparent.subscribe( globalListener );\n\t}\n\n\treturn withPlugins( registry );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/data/src/registry.js"],"names":["mapValues","isObject","forEach","deprecated","createReduxStore","coreDataStore","createEmitter","createRegistry","storeConfigs","parent","stores","emitter","__experimentalListeningStores","Set","globalListener","emit","subscribe","listener","select","storeNameOrDescriptor","storeName","name","add","store","getSelectors","__experimentalMarkListeningStores","callback","ref","clear","result","call","current","Array","from","resolveSelect","getResolveSelectors","dispatch","getActions","withPlugins","attributes","attribute","key","registry","apply","arguments","registerStoreInstance","TypeError","currentSubscribe","unsubscribeFromEmitter","unsubscribeFromStore","isPaused","register","instantiate","registerGenericStore","since","alternative","registerStore","options","reducer","__experimentalSubscribeStore","handler","batch","pause","resume","namespaces","use","plugin","config","Object","entries"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { mapValues, isObject, forEach } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport createReduxStore from './redux-store';\nimport coreDataStore from './store';\nimport { createEmitter } from './utils/emitter';\n\n/** @typedef {import('./types').StoreDescriptor} StoreDescriptor */\n\n/**\n * @typedef {Object} WPDataRegistry An isolated orchestrator of store registrations.\n *\n * @property {Function} registerGenericStore Given a namespace key and settings\n * object, registers a new generic\n * store.\n * @property {Function} registerStore Given a namespace key and settings\n * object, registers a new namespace\n * store.\n * @property {Function} subscribe Given a function callback, invokes\n * the callback on any change to state\n * within any registered store.\n * @property {Function} select Given a namespace key, returns an\n * object of the store's registered\n * selectors.\n * @property {Function} dispatch Given a namespace key, returns an\n * object of the store's registered\n * action dispatchers.\n */\n\n/**\n * @typedef {Object} WPDataPlugin An object of registry function overrides.\n *\n * @property {Function} registerStore registers store.\n */\n\n/**\n * Creates a new store registry, given an optional object of initial store\n * configurations.\n *\n * @param {Object} storeConfigs Initial store configurations.\n * @param {Object?} parent Parent registry.\n *\n * @return {WPDataRegistry} Data registry.\n */\nexport function createRegistry( storeConfigs = {}, parent = null ) {\n\tconst stores = {};\n\tconst emitter = createEmitter();\n\tconst __experimentalListeningStores = new Set();\n\n\t/**\n\t * Global listener called for each store's update.\n\t */\n\tfunction globalListener() {\n\t\temitter.emit();\n\t}\n\n\t/**\n\t * Subscribe to changes to any data.\n\t *\n\t * @param {Function} listener Listener function.\n\t *\n\t * @return {Function} Unsubscribe function.\n\t */\n\tconst subscribe = ( listener ) => {\n\t\treturn emitter.subscribe( listener );\n\t};\n\n\t/**\n\t * Calls a selector given the current state and extra arguments.\n\t *\n\t * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store\n\t * or the store descriptor.\n\t *\n\t * @return {*} The selector's returned value.\n\t */\n\tfunction select( storeNameOrDescriptor ) {\n\t\tconst storeName = isObject( storeNameOrDescriptor )\n\t\t\t? storeNameOrDescriptor.name\n\t\t\t: storeNameOrDescriptor;\n\t\t__experimentalListeningStores.add( storeName );\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getSelectors();\n\t\t}\n\n\t\treturn parent && parent.select( storeName );\n\t}\n\n\tfunction __experimentalMarkListeningStores( callback, ref ) {\n\t\t__experimentalListeningStores.clear();\n\t\tconst result = callback.call( this );\n\t\tref.current = Array.from( __experimentalListeningStores );\n\t\treturn result;\n\t}\n\n\t/**\n\t * Given the name of a registered store, returns an object containing the store's\n\t * selectors pre-bound to state so that you only need to supply additional arguments,\n\t * and modified so that they return promises that resolve to their eventual values,\n\t * after any resolvers have ran.\n\t *\n\t * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store\n\t * or the store descriptor.\n\t *\n\t * @return {Object} Each key of the object matches the name of a selector.\n\t */\n\tfunction resolveSelect( storeNameOrDescriptor ) {\n\t\tconst storeName = isObject( storeNameOrDescriptor )\n\t\t\t? storeNameOrDescriptor.name\n\t\t\t: storeNameOrDescriptor;\n\t\t__experimentalListeningStores.add( storeName );\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getResolveSelectors();\n\t\t}\n\n\t\treturn parent && parent.resolveSelect( storeName );\n\t}\n\n\t/**\n\t * Returns the available actions for a part of the state.\n\t *\n\t * @param {string|StoreDescriptor} storeNameOrDescriptor Unique namespace identifier for the store\n\t * or the store descriptor.\n\t *\n\t * @return {*} The action's returned value.\n\t */\n\tfunction dispatch( storeNameOrDescriptor ) {\n\t\tconst storeName = isObject( storeNameOrDescriptor )\n\t\t\t? storeNameOrDescriptor.name\n\t\t\t: storeNameOrDescriptor;\n\t\tconst store = stores[ storeName ];\n\t\tif ( store ) {\n\t\t\treturn store.getActions();\n\t\t}\n\n\t\treturn parent && parent.dispatch( storeName );\n\t}\n\n\t//\n\t// Deprecated\n\t// TODO: Remove this after `use()` is removed.\n\t//\n\tfunction withPlugins( attributes ) {\n\t\treturn mapValues( attributes, ( attribute, key ) => {\n\t\t\tif ( typeof attribute !== 'function' ) {\n\t\t\t\treturn attribute;\n\t\t\t}\n\t\t\treturn function () {\n\t\t\t\treturn registry[ key ].apply( null, arguments );\n\t\t\t};\n\t\t} );\n\t}\n\n\t/**\n\t * Registers a store instance.\n\t *\n\t * @param {string} name Store registry name.\n\t * @param {Object} store Store instance object (getSelectors, getActions, subscribe).\n\t */\n\tfunction registerStoreInstance( name, store ) {\n\t\tif ( typeof store.getSelectors !== 'function' ) {\n\t\t\tthrow new TypeError( 'store.getSelectors must be a function' );\n\t\t}\n\t\tif ( typeof store.getActions !== 'function' ) {\n\t\t\tthrow new TypeError( 'store.getActions must be a function' );\n\t\t}\n\t\tif ( typeof store.subscribe !== 'function' ) {\n\t\t\tthrow new TypeError( 'store.subscribe must be a function' );\n\t\t}\n\t\t// The emitter is used to keep track of active listeners when the registry\n\t\t// get paused, that way, when resumed we should be able to call all these\n\t\t// pending listeners.\n\t\tstore.emitter = createEmitter();\n\t\tconst currentSubscribe = store.subscribe;\n\t\tstore.subscribe = ( listener ) => {\n\t\t\tconst unsubscribeFromEmitter = store.emitter.subscribe( listener );\n\t\t\tconst unsubscribeFromStore = currentSubscribe( () => {\n\t\t\t\tif ( store.emitter.isPaused ) {\n\t\t\t\t\tstore.emitter.emit();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlistener();\n\t\t\t} );\n\n\t\t\treturn () => {\n\t\t\t\tunsubscribeFromStore?.();\n\t\t\t\tunsubscribeFromEmitter?.();\n\t\t\t};\n\t\t};\n\t\tstores[ name ] = store;\n\t\tstore.subscribe( globalListener );\n\t}\n\n\t/**\n\t * Registers a new store given a store descriptor.\n\t *\n\t * @param {StoreDescriptor} store Store descriptor.\n\t */\n\tfunction register( store ) {\n\t\tregisterStoreInstance( store.name, store.instantiate( registry ) );\n\t}\n\n\tfunction registerGenericStore( name, store ) {\n\t\tdeprecated( 'wp.data.registerGenericStore', {\n\t\t\tsince: '5.9',\n\t\t\talternative: 'wp.data.register( storeDescriptor )',\n\t\t} );\n\t\tregisterStoreInstance( name, store );\n\t}\n\n\t/**\n\t * Registers a standard `@wordpress/data` store.\n\t *\n\t * @param {string} storeName Unique namespace identifier.\n\t * @param {Object} options Store description (reducer, actions, selectors, resolvers).\n\t *\n\t * @return {Object} Registered store object.\n\t */\n\tfunction registerStore( storeName, options ) {\n\t\tif ( ! options.reducer ) {\n\t\t\tthrow new TypeError( 'Must specify store reducer' );\n\t\t}\n\n\t\tconst store = createReduxStore( storeName, options ).instantiate(\n\t\t\tregistry\n\t\t);\n\t\tregisterStoreInstance( storeName, store );\n\t\treturn store.store;\n\t}\n\n\t/**\n\t * Subscribe handler to a store.\n\t *\n\t * @param {string[]} storeName The store name.\n\t * @param {Function} handler The function subscribed to the store.\n\t * @return {Function} A function to unsubscribe the handler.\n\t */\n\tfunction __experimentalSubscribeStore( storeName, handler ) {\n\t\tif ( storeName in stores ) {\n\t\t\treturn stores[ storeName ].subscribe( handler );\n\t\t}\n\n\t\t// Trying to access a store that hasn't been registered,\n\t\t// this is a pattern rarely used but seen in some places.\n\t\t// We fallback to regular `subscribe` here for backward-compatibility for now.\n\t\t// See https://github.com/WordPress/gutenberg/pull/27466 for more info.\n\t\tif ( ! parent ) {\n\t\t\treturn subscribe( handler );\n\t\t}\n\n\t\treturn parent.__experimentalSubscribeStore( storeName, handler );\n\t}\n\n\tfunction batch( callback ) {\n\t\temitter.pause();\n\t\tforEach( stores, ( store ) => store.emitter.pause() );\n\t\tcallback();\n\t\temitter.resume();\n\t\tforEach( stores, ( store ) => store.emitter.resume() );\n\t}\n\n\tlet registry = {\n\t\tbatch,\n\t\tstores,\n\t\tnamespaces: stores, // TODO: Deprecate/remove this.\n\t\tsubscribe,\n\t\tselect,\n\t\tresolveSelect,\n\t\tdispatch,\n\t\tuse,\n\t\tregister,\n\t\tregisterGenericStore,\n\t\tregisterStore,\n\t\t__experimentalMarkListeningStores,\n\t\t__experimentalSubscribeStore,\n\t};\n\n\t//\n\t// TODO:\n\t// This function will be deprecated as soon as it is no longer internally referenced.\n\t//\n\tfunction use( plugin, options ) {\n\t\tif ( ! plugin ) {\n\t\t\treturn;\n\t\t}\n\n\t\tregistry = {\n\t\t\t...registry,\n\t\t\t...plugin( registry, options ),\n\t\t};\n\n\t\treturn registry;\n\t}\n\n\tregistry.register( coreDataStore );\n\n\tfor ( const [ name, config ] of Object.entries( storeConfigs ) ) {\n\t\tregistry.register( createReduxStore( name, config ) );\n\t}\n\n\tif ( parent ) {\n\t\tparent.subscribe( globalListener );\n\t}\n\n\treturn withPlugins( registry );\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wordpress/data",
|
|
3
|
-
"version": "6.2.
|
|
3
|
+
"version": "6.2.1",
|
|
4
4
|
"description": "Data module for WordPress.",
|
|
5
5
|
"author": "The WordPress Contributors",
|
|
6
6
|
"license": "GPL-2.0-or-later",
|
|
@@ -28,16 +28,15 @@
|
|
|
28
28
|
"sideEffects": false,
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@babel/runtime": "^7.16.0",
|
|
31
|
-
"@wordpress/compose": "^5.1.
|
|
32
|
-
"@wordpress/deprecated": "^3.3.
|
|
33
|
-
"@wordpress/element": "^4.1.
|
|
34
|
-
"@wordpress/is-shallow-equal": "^4.3.
|
|
35
|
-
"@wordpress/priority-queue": "^2.3.
|
|
36
|
-
"@wordpress/redux-routine": "^4.3.
|
|
31
|
+
"@wordpress/compose": "^5.1.1",
|
|
32
|
+
"@wordpress/deprecated": "^3.3.1",
|
|
33
|
+
"@wordpress/element": "^4.1.1",
|
|
34
|
+
"@wordpress/is-shallow-equal": "^4.3.1",
|
|
35
|
+
"@wordpress/priority-queue": "^2.3.1",
|
|
36
|
+
"@wordpress/redux-routine": "^4.3.1",
|
|
37
37
|
"equivalent-key-map": "^0.2.2",
|
|
38
38
|
"is-promise": "^4.0.0",
|
|
39
39
|
"lodash": "^4.17.21",
|
|
40
|
-
"memize": "^1.1.0",
|
|
41
40
|
"redux": "^4.1.2",
|
|
42
41
|
"turbo-combine-reducers": "^1.0.2",
|
|
43
42
|
"use-memo-one": "^1.1.1"
|
|
@@ -48,5 +47,5 @@
|
|
|
48
47
|
"publishConfig": {
|
|
49
48
|
"access": "public"
|
|
50
49
|
},
|
|
51
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "2e4922861e49f5a090f9dc52056165092cfba163"
|
|
52
51
|
}
|
package/src/plugins/index.js
CHANGED
package/src/registry.js
CHANGED
|
@@ -291,6 +291,10 @@ export function createRegistry( storeConfigs = {}, parent = null ) {
|
|
|
291
291
|
// This function will be deprecated as soon as it is no longer internally referenced.
|
|
292
292
|
//
|
|
293
293
|
function use( plugin, options ) {
|
|
294
|
+
if ( ! plugin ) {
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
|
|
294
298
|
registry = {
|
|
295
299
|
...registry,
|
|
296
300
|
...plugin( registry, options ),
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.default = void 0;
|
|
9
|
-
|
|
10
|
-
var _deprecated = _interopRequireDefault(require("@wordpress/deprecated"));
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* WordPress dependencies
|
|
14
|
-
*/
|
|
15
|
-
var _default = registry => {
|
|
16
|
-
(0, _deprecated.default)('wp.data.plugins.controls', {
|
|
17
|
-
since: '5.4',
|
|
18
|
-
hint: 'The controls plugins is now baked-in.'
|
|
19
|
-
});
|
|
20
|
-
return registry;
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
exports.default = _default;
|
|
24
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/data/src/plugins/controls/index.js"],"names":["registry","since","hint"],"mappings":";;;;;;;;;AAGA;;AAHA;AACA;AACA;eAGiBA,QAAF,IAAgB;AAC9B,2BAAY,0BAAZ,EAAwC;AACvCC,IAAAA,KAAK,EAAE,KADgC;AAEvCC,IAAAA,IAAI,EAAE;AAFiC,GAAxC;AAIA,SAAOF,QAAP;AACA,C","sourcesContent":["/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\n\nexport default ( registry ) => {\n\tdeprecated( 'wp.data.plugins.controls', {\n\t\tsince: '5.4',\n\t\thint: 'The controls plugins is now baked-in.',\n\t} );\n\treturn registry;\n};\n"]}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WordPress dependencies
|
|
3
|
-
*/
|
|
4
|
-
import deprecated from '@wordpress/deprecated';
|
|
5
|
-
export default (registry => {
|
|
6
|
-
deprecated('wp.data.plugins.controls', {
|
|
7
|
-
since: '5.4',
|
|
8
|
-
hint: 'The controls plugins is now baked-in.'
|
|
9
|
-
});
|
|
10
|
-
return registry;
|
|
11
|
-
});
|
|
12
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/data/src/plugins/controls/index.js"],"names":["deprecated","registry","since","hint"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,uBAAvB;AAEA,gBAAiBC,QAAF,IAAgB;AAC9BD,EAAAA,UAAU,CAAE,0BAAF,EAA8B;AACvCE,IAAAA,KAAK,EAAE,KADgC;AAEvCC,IAAAA,IAAI,EAAE;AAFiC,GAA9B,CAAV;AAIA,SAAOF,QAAP;AACA,CAND","sourcesContent":["/**\n * WordPress dependencies\n */\nimport deprecated from '@wordpress/deprecated';\n\nexport default ( registry ) => {\n\tdeprecated( 'wp.data.plugins.controls', {\n\t\tsince: '5.4',\n\t\thint: 'The controls plugins is now baked-in.',\n\t} );\n\treturn registry;\n};\n"]}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WordPress dependencies
|
|
3
|
-
*/
|
|
4
|
-
import deprecated from '@wordpress/deprecated';
|
|
5
|
-
|
|
6
|
-
export default ( registry ) => {
|
|
7
|
-
deprecated( 'wp.data.plugins.controls', {
|
|
8
|
-
since: '5.4',
|
|
9
|
-
hint: 'The controls plugins is now baked-in.',
|
|
10
|
-
} );
|
|
11
|
-
return registry;
|
|
12
|
-
};
|