Skip to content

Commit

Permalink
Decouple store definition from the registry object (#26996)
Browse files Browse the repository at this point in the history
  • Loading branch information
youknowriad authored Nov 17, 2020
1 parent fcd8c78 commit b1c6411
Show file tree
Hide file tree
Showing 59 changed files with 347 additions and 342 deletions.
2 changes: 1 addition & 1 deletion packages/annotations/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@
import './format';
import './block';

export { storeDefinition } from './store';
export { store } from './store';
13 changes: 5 additions & 8 deletions packages/annotations/src/store/index.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
/**
* WordPress dependencies
*/
import {
__unstableCreateStoreDefinition,
registerStore,
} from '@wordpress/data';
import { register, createReduxStore } from '@wordpress/data';

/**
* Internal dependencies
Expand All @@ -21,14 +18,14 @@ const STORE_NAME = 'core/annotations';
/**
* Store definition for the annotations namespace.
*
* @see https://github.com/WordPress/gutenberg/blob/master/packages/data/README.md#createStoreDefinition
* @see https://github.com/WordPress/gutenberg/blob/master/packages/data/README.md#createReduxStore
*
* @type {Object}
*/
export const storeDefinition = __unstableCreateStoreDefinition( STORE_NAME );

export default registerStore( STORE_NAME, {
export const store = createReduxStore( STORE_NAME, {
reducer,
selectors,
actions,
} );

register( store );
2 changes: 1 addition & 1 deletion packages/block-directory/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ import '@wordpress/notices';
*/
import './plugins';

export { storeDefinition } from './store';
export { store } from './store';
11 changes: 4 additions & 7 deletions packages/block-directory/src/store/index.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
/**
* WordPress dependencies
*/
import {
__unstableCreateStoreDefinition,
registerStore,
} from '@wordpress/data';
import { createReduxStore, register } from '@wordpress/data';
import { controls as dataControls } from '@wordpress/data-controls';

/**
Expand Down Expand Up @@ -39,10 +36,10 @@ export const storeConfig = {
/**
* Store definition for the block directory namespace.
*
* @see https://github.com/WordPress/gutenberg/blob/master/packages/data/README.md#createStoreDefinition
* @see https://github.com/WordPress/gutenberg/blob/master/packages/data/README.md#createReduxStore
*
* @type {Object}
*/
export const storeDefinition = __unstableCreateStoreDefinition( STORE_NAME );
export const store = createReduxStore( STORE_NAME, storeConfig );

export default registerStore( STORE_NAME, storeConfig );
register( store );
12 changes: 6 additions & 6 deletions packages/block-editor/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -504,25 +504,25 @@ _Properties_

Undocumented declaration.

<a name="storeConfig" href="#storeConfig">#</a> **storeConfig**
<a name="store" href="#store">#</a> **store**

Block editor data store configuration.
Store definition for the block editor namespace.

_Related_

- <https://github.com/WordPress/gutenberg/blob/master/packages/data/README.md#registerStore>
- <https://github.com/WordPress/gutenberg/blob/master/packages/data/README.md#createReduxStore>

_Type_

- `Object`

<a name="storeDefinition" href="#storeDefinition">#</a> **storeDefinition**
<a name="storeConfig" href="#storeConfig">#</a> **storeConfig**

Store definition for the block editor namespace.
Block editor data store configuration.

_Related_

- <https://github.com/WordPress/gutenberg/blob/master/packages/data/README.md#createStoreDefinition>
- <https://github.com/WordPress/gutenberg/blob/master/packages/data/README.md#registerStore>

_Type_

Expand Down
2 changes: 1 addition & 1 deletion packages/block-editor/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,5 @@ import '@wordpress/notices';
import './hooks';
export * from './components';
export * from './utils';
export { storeConfig, storeDefinition } from './store';
export { storeConfig, store } from './store';
export { SETTINGS_DEFAULTS } from './store/defaults';
21 changes: 11 additions & 10 deletions packages/block-editor/src/store/index.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
/**
* WordPress dependencies
*/
import {
__unstableCreateStoreDefinition,
registerStore,
} from '@wordpress/data';
import { createReduxStore, registerStore } from '@wordpress/data';

/**
* Internal dependencies
Expand Down Expand Up @@ -37,16 +34,20 @@ export const storeConfig = {
/**
* Store definition for the block editor namespace.
*
* @see https://github.com/WordPress/gutenberg/blob/master/packages/data/README.md#createStoreDefinition
* @see https://github.com/WordPress/gutenberg/blob/master/packages/data/README.md#createReduxStore
*
* @type {Object}
*/
export const storeDefinition = __unstableCreateStoreDefinition( STORE_NAME );

const store = registerStore( STORE_NAME, {
export const store = createReduxStore( STORE_NAME, {
...storeConfig,
persist: [ 'preferences' ],
} );
applyMiddlewares( store );

export default store;
// Ideally we'd use register instead of register stores.
// We should be able to make the switch once we remove the "effects" middleware.
// We also need a more generic way of defining persistence and not rely on a plugin.
const instantiatedStore = registerStore( STORE_NAME, {
...storeConfig,
persist: [ 'preferences' ],
} );
applyMiddlewares( instantiatedStore );
4 changes: 2 additions & 2 deletions packages/blocks/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -740,13 +740,13 @@ _Parameters_

- _blockName_ `string`: Block name.

<a name="storeDefinition" href="#storeDefinition">#</a> **storeDefinition**
<a name="store" href="#store">#</a> **store**

Store definition for the blocks namespace.

_Related_

- <https://github.com/WordPress/gutenberg/blob/master/packages/data/README.md#createStoreDefinition>
- <https://github.com/WordPress/gutenberg/blob/master/packages/data/README.md#createReduxStore>

_Type_

Expand Down
2 changes: 1 addition & 1 deletion packages/blocks/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@
// Blocks are inferred from the HTML source of a post through a parsing mechanism
// and then stored as objects in state, from which it is then rendered for editing.

export { storeDefinition } from './store';
export { store } from './store';
export * from './api';
export { withBlockContentContext } from './block-content-provider';
15 changes: 8 additions & 7 deletions packages/blocks/src/store/index.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
/**
* WordPress dependencies
*/
import {
__unstableCreateStoreDefinition,
registerStore,
} from '@wordpress/data';
import { createReduxStore, register } from '@wordpress/data';

/**
* Internal dependencies
Expand All @@ -18,10 +15,14 @@ const STORE_NAME = 'core/blocks';
/**
* Store definition for the blocks namespace.
*
* @see https://github.com/WordPress/gutenberg/blob/master/packages/data/README.md#createStoreDefinition
* @see https://github.com/WordPress/gutenberg/blob/master/packages/data/README.md#createReduxStore
*
* @type {Object}
*/
export const storeDefinition = __unstableCreateStoreDefinition( STORE_NAME );
export const store = createReduxStore( STORE_NAME, {
reducer,
selectors,
actions,
} );

export default registerStore( STORE_NAME, { reducer, selectors, actions } );
register( store );
14 changes: 6 additions & 8 deletions packages/core-data/src/index.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
/**
* WordPress dependencies
*/
import {
__unstableCreateStoreDefinition,
registerStore,
} from '@wordpress/data';
import { createReduxStore, register } from '@wordpress/data';
import { controls } from '@wordpress/data-controls';

/**
Expand Down Expand Up @@ -59,23 +56,24 @@ const entityActions = defaultEntities.reduce( ( result, entity ) => {
return result;
}, {} );

export const storeConfig = {
const storeConfig = {
reducer,
controls,
actions: { ...actions, ...entityActions, ...locksActions },
selectors: { ...selectors, ...entitySelectors, ...locksSelectors },
resolvers: { ...resolvers, ...entityResolvers },
};

/**
* Store definition for the code data namespace.
*
* @see https://github.com/WordPress/gutenberg/blob/master/packages/data/README.md#createStoreDefinition
* @see https://github.com/WordPress/gutenberg/blob/master/packages/data/README.md#createReduxStore
*
* @type {Object}
*/
export const storeDefinition = __unstableCreateStoreDefinition( STORE_NAME );
export const store = createReduxStore( STORE_NAME, storeConfig );

registerStore( STORE_NAME, storeConfig );
register( store );

export { default as EntityProvider } from './entity-provider';
export * from './entity-provider';
6 changes: 3 additions & 3 deletions packages/core-data/src/test/integration.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { createRegistry, controls } from '@wordpress/data';
import * as actions from '../actions';
import * as selectors from '../selectors';
import * as resolvers from '../resolvers';
import { storeConfig as coreStoreConfig } from '../';
import { store } from '../';

// Mock to prevent calling window.fetch in test environment
jest.mock( '@wordpress/data-controls', () => {
Expand Down Expand Up @@ -52,7 +52,7 @@ describe( 'receiveEntityRecord', () => {
data: {},
},
};
registry.registerStore( 'core', coreStoreConfig );
registry.register( store );
registry.registerStore( 'test/resolution', {
actions: {
receiveEntityRecords: actions.receiveEntityRecords,
Expand Down Expand Up @@ -160,7 +160,7 @@ describe( 'receiveEntityRecord', () => {
describe( 'saveEntityRecord', () => {
function createTestRegistry() {
const registry = createRegistry();
registry.registerStore( 'core', coreStoreConfig );
registry.register( store );
return registry;
}

Expand Down
21 changes: 21 additions & 0 deletions packages/data/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,19 @@ _Returns_

Undocumented declaration.

<a name="createReduxStore" href="#createReduxStore">#</a> **createReduxStore**

Creates a namespace object with a store derived from the reducer given.

_Parameters_

- _key_ `string`: Unique namespace identifier.
- _options_ (unknown type): Registered store options, with properties describing reducer, actions, selectors, and resolvers.

_Returns_

- (unknown type): Store Object.

<a name="createRegistry" href="#createRegistry">#</a> **createRegistry**

Creates a new store registry, given an optional object of initial store
Expand Down Expand Up @@ -470,6 +483,14 @@ _Type_

- `Object`

<a name="register" href="#register">#</a> **register**

Registers a standard `@wordpress/data` store definition.

_Parameters_

- _store_ (unknown type): Store definition.

<a name="registerGenericStore" href="#registerGenericStore">#</a> **registerGenericStore**

Registers a generic store.
Expand Down
21 changes: 0 additions & 21 deletions packages/data/src/factory.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,24 +79,3 @@ export function createRegistryControl( registryControl ) {

return registryControl;
}

/**
* Creates a store definition to pass to store API methods.
*
* @example
* ```js
* const storeDefinition = __unstableCreateStoreDefinition( 'my-shop' );
* ```
*
* @param {string} storeName Unique namespace identifier for the store.
*
* @return {Object} Store definition object.
*/
export function __unstableCreateStoreDefinition( storeName ) {
return {
name: storeName,
toString() {
return this.name;
},
};
}
14 changes: 9 additions & 5 deletions packages/data/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,9 @@ export { default as useSelect } from './components/use-select';
export { useDispatch } from './components/use-dispatch';
export { AsyncModeProvider } from './components/async-mode-provider';
export { createRegistry } from './registry';
export {
createRegistrySelector,
createRegistryControl,
__unstableCreateStoreDefinition,
} from './factory';
export { createRegistrySelector, createRegistryControl } from './factory';
export { controls } from './controls';
export { default as createReduxStore } from './redux-store';

/**
* Object of available plugins to use with a registry.
Expand Down Expand Up @@ -181,3 +178,10 @@ export const registerStore = defaultRegistry.registerStore;
* @param {Object} plugin Plugin object.
*/
export const use = defaultRegistry.use;

/**
* Registers a standard `@wordpress/data` store definition.
*
* @param {import('./types').WPDataStore} store Store definition.
*/
export const register = defaultRegistry.register;
Loading

0 comments on commit b1c6411

Please sign in to comment.