@elementor/store 0.6.1 → 0.7.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 +11 -0
- package/README.md +1 -2
- package/dist/index.d.mts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +26 -26
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +22 -15
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/store.test.tsx +44 -44
- package/src/index.ts +28 -10
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [0.7.0](https://github.com/elementor/elementor-packages/compare/@elementor/store@0.6.1...@elementor/store@0.7.0) (2023-09-11)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* **store:** mark experimental functions [ED-12070] ([#114](https://github.com/elementor/elementor-packages/issues/114)) ([d790829](https://github.com/elementor/elementor-packages/commit/d79082911195c75f6d3a89a5619b234e2f5ce158))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
## [0.6.1](https://github.com/elementor/elementor-packages/compare/@elementor/store@0.6.0...@elementor/store@0.6.1) (2023-06-29)
|
|
7
18
|
|
|
8
19
|
**Note:** Version bump only for package @elementor/store
|
package/README.md
CHANGED
package/dist/index.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as redux from 'redux';
|
|
2
2
|
import { Slice, Middleware, AnyAction, Store } from '@reduxjs/toolkit';
|
|
3
|
-
export { Action, AnyAction, CreateSliceOptions, Dispatch, Middleware, MiddlewareAPI, PayloadAction, Slice, Store, createSelector, createSlice } from '@reduxjs/toolkit';
|
|
4
|
-
export { Provider as
|
|
3
|
+
export { Action, AnyAction, CreateSliceOptions, Dispatch, Middleware, MiddlewareAPI, PayloadAction, Slice, Store, createSelector as __createSelector, createSlice as __createSlice } from '@reduxjs/toolkit';
|
|
4
|
+
export { Provider as __StoreProvider, useDispatch as __useDispatch, useSelector as __useSelector } from 'react-redux';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Usage:
|
|
@@ -24,4 +24,4 @@ declare const createStore: () => Store<any, AnyAction>;
|
|
|
24
24
|
declare const getStore: () => Store<any, AnyAction> | null;
|
|
25
25
|
declare const deleteStore: () => void;
|
|
26
26
|
|
|
27
|
-
export { SliceState, addMiddleware, createStore, deleteStore, dispatch, getState, getStore, registerSlice, subscribe };
|
|
27
|
+
export { SliceState, addMiddleware as __addMiddleware, createStore as __createStore, deleteStore as __deleteStore, dispatch as __dispatch, getState as __getState, getStore as __getStore, registerSlice as __registerSlice, subscribe as __subscribe };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as redux from 'redux';
|
|
2
2
|
import { Slice, Middleware, AnyAction, Store } from '@reduxjs/toolkit';
|
|
3
|
-
export { Action, AnyAction, CreateSliceOptions, Dispatch, Middleware, MiddlewareAPI, PayloadAction, Slice, Store, createSelector, createSlice } from '@reduxjs/toolkit';
|
|
4
|
-
export { Provider as
|
|
3
|
+
export { Action, AnyAction, CreateSliceOptions, Dispatch, Middleware, MiddlewareAPI, PayloadAction, Slice, Store, createSelector as __createSelector, createSlice as __createSlice } from '@reduxjs/toolkit';
|
|
4
|
+
export { Provider as __StoreProvider, useDispatch as __useDispatch, useSelector as __useSelector } from 'react-redux';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Usage:
|
|
@@ -24,4 +24,4 @@ declare const createStore: () => Store<any, AnyAction>;
|
|
|
24
24
|
declare const getStore: () => Store<any, AnyAction> | null;
|
|
25
25
|
declare const deleteStore: () => void;
|
|
26
26
|
|
|
27
|
-
export { SliceState, addMiddleware, createStore, deleteStore, dispatch, getState, getStore, registerSlice, subscribe };
|
|
27
|
+
export { SliceState, addMiddleware as __addMiddleware, createStore as __createStore, deleteStore as __deleteStore, dispatch as __dispatch, getState as __getState, getStore as __getStore, registerSlice as __registerSlice, subscribe as __subscribe };
|
package/dist/index.js
CHANGED
|
@@ -20,19 +20,19 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/index.ts
|
|
21
21
|
var src_exports = {};
|
|
22
22
|
__export(src_exports, {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
23
|
+
__StoreProvider: () => import_react_redux.Provider,
|
|
24
|
+
__addMiddleware: () => addMiddleware,
|
|
25
|
+
__createSelector: () => import_toolkit2.createSelector,
|
|
26
|
+
__createSlice: () => import_toolkit2.createSlice,
|
|
27
|
+
__createStore: () => createStore,
|
|
28
|
+
__deleteStore: () => deleteStore,
|
|
29
|
+
__dispatch: () => dispatch,
|
|
30
|
+
__getState: () => getState,
|
|
31
|
+
__getStore: () => getStore,
|
|
32
|
+
__registerSlice: () => registerSlice,
|
|
33
|
+
__subscribe: () => subscribe,
|
|
34
|
+
__useDispatch: () => import_react_redux.useDispatch,
|
|
35
|
+
__useSelector: () => import_react_redux.useSelector
|
|
36
36
|
});
|
|
37
37
|
module.exports = __toCommonJS(src_exports);
|
|
38
38
|
var import_toolkit = require("@reduxjs/toolkit");
|
|
@@ -102,18 +102,18 @@ var deleteStore = () => {
|
|
|
102
102
|
};
|
|
103
103
|
// Annotate the CommonJS export names for ESM import in node:
|
|
104
104
|
0 && (module.exports = {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
105
|
+
__StoreProvider,
|
|
106
|
+
__addMiddleware,
|
|
107
|
+
__createSelector,
|
|
108
|
+
__createSlice,
|
|
109
|
+
__createStore,
|
|
110
|
+
__deleteStore,
|
|
111
|
+
__dispatch,
|
|
112
|
+
__getState,
|
|
113
|
+
__getStore,
|
|
114
|
+
__registerSlice,
|
|
115
|
+
__subscribe,
|
|
116
|
+
__useDispatch,
|
|
117
|
+
__useSelector
|
|
118
118
|
});
|
|
119
119
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n\tReducersMapObject,\n\tconfigureStore,\n\tcombineReducers,\n\tMiddleware,\n\tStore,\n\tSlice,\n\tAnyAction,\n} from '@reduxjs/toolkit';\n\nexport type {\n\tSlice,\n\tCreateSliceOptions,\n\tPayloadAction,\n\tStore,\n\tDispatch,\n\tAnyAction,\n\tAction,\n\tMiddlewareAPI,\n\tMiddleware,\n} from '@reduxjs/toolkit';\n\nexport {
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n\tReducersMapObject,\n\tconfigureStore,\n\tcombineReducers,\n\tMiddleware,\n\tStore,\n\tSlice,\n\tAnyAction,\n} from '@reduxjs/toolkit';\n\nexport type {\n\tSlice,\n\tCreateSliceOptions,\n\tPayloadAction,\n\tStore,\n\tDispatch,\n\tAnyAction,\n\tAction,\n\tMiddlewareAPI,\n\tMiddleware,\n} from '@reduxjs/toolkit';\n\nexport {\n\tcreateSelector as __createSelector,\n\tcreateSlice as __createSlice,\n} from '@reduxjs/toolkit';\n\nexport {\n\tuseSelector as __useSelector,\n\tuseDispatch as __useDispatch,\n\tProvider as __StoreProvider,\n} from 'react-redux';\n\n/**\n * Usage:\n *\n * const mySlice = addSlice( ... );\n *\n * type MySliceState = SliceState<typeof mySlice>;\n *\n * const value = useSelector( ( state: MySliceState ) => state.mySlice.value );\n */\nexport type SliceState<S extends Slice> = {\n\t[ key in S['name'] ]: ReturnType<S['getInitialState']>;\n}\n\ninterface SlicesMap {\n\t[key: Slice['name']]: Slice;\n}\n\nlet instance: Store | null = null;\nlet slices: SlicesMap = {};\nconst pendingActions: AnyAction[] = [];\nconst middlewares = new Set<Middleware>();\n\nconst getReducers = () => {\n\tconst reducers = Object.entries( slices ).reduce( ( reducersData: ReducersMapObject, [ name, slice ] ) => {\n\t\treducersData[ name ] = slice.reducer;\n\n\t\treturn reducersData;\n\t}, {} );\n\n\treturn combineReducers( reducers );\n};\n\nfunction registerSlice( slice: Slice ) {\n\tif ( slices[ slice.name ] ) {\n\t\tthrow new Error( `Slice with name \"${ slice.name }\" already exists.` );\n\t}\n\n\tslices[ slice.name ] = slice;\n}\n\nconst addMiddleware = ( middleware: Middleware ) => {\n\tmiddlewares.add( middleware );\n};\n\nconst dispatch = ( action: AnyAction ) => {\n\tif ( ! instance ) {\n\t\tpendingActions.push( action );\n\n\t\treturn;\n\t}\n\n\treturn instance.dispatch( action );\n};\n\nconst getState = () => {\n\tif ( ! instance ) {\n\t\tthrow new Error( 'The store instance does not exist.' );\n\t}\n\n\treturn instance.getState();\n};\n\nconst subscribe = ( listener: () => void ) => {\n\tif ( ! instance ) {\n\t\tthrow new Error( 'The store instance does not exist.' );\n\t}\n\n\treturn instance.subscribe( listener );\n};\n\nconst createStore = () => {\n\tif ( instance ) {\n\t\tthrow new Error( 'The store instance already exists.' );\n\t}\n\n\tinstance = configureStore( {\n\t\treducer: getReducers(),\n\t\tmiddleware: Array.from( middlewares ),\n\t} );\n\n\tif ( pendingActions.length ) {\n\t\tpendingActions.forEach( ( action ) => dispatch( action ) );\n\t\tpendingActions.length = 0;\n\t}\n\n\treturn instance;\n};\n\nconst getStore = () => {\n\treturn instance;\n};\n\nconst deleteStore = () => {\n\tinstance = null;\n\tslices = {};\n\tpendingActions.length = 0;\n\tmiddlewares.clear();\n};\n\nexport {\n\tregisterSlice as __registerSlice,\n\taddMiddleware as __addMiddleware,\n\tdispatch as __dispatch,\n\tgetState as __getState,\n\tsubscribe as __subscribe,\n\tcreateStore as __createStore,\n\tgetStore as __getStore,\n\tdeleteStore as __deleteStore,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAQO;AAcP,IAAAA,kBAGO;AAEP,yBAIO;AAmBP,IAAI,WAAyB;AAC7B,IAAI,SAAoB,CAAC;AACzB,IAAM,iBAA8B,CAAC;AACrC,IAAM,cAAc,oBAAI,IAAgB;AAExC,IAAM,cAAc,MAAM;AACzB,QAAM,WAAW,OAAO,QAAS,MAAO,EAAE,OAAQ,CAAE,cAAiC,CAAE,MAAM,KAAM,MAAO;AACzG,iBAAc,IAAK,IAAI,MAAM;AAE7B,WAAO;AAAA,EACR,GAAG,CAAC,CAAE;AAEN,aAAO,gCAAiB,QAAS;AAClC;AAEA,SAAS,cAAe,OAAe;AACtC,MAAK,OAAQ,MAAM,IAAK,GAAI;AAC3B,UAAM,IAAI,MAAO,oBAAqB,MAAM,IAAK,mBAAoB;AAAA,EACtE;AAEA,SAAQ,MAAM,IAAK,IAAI;AACxB;AAEA,IAAM,gBAAgB,CAAE,eAA4B;AACnD,cAAY,IAAK,UAAW;AAC7B;AAEA,IAAM,WAAW,CAAE,WAAuB;AACzC,MAAK,CAAE,UAAW;AACjB,mBAAe,KAAM,MAAO;AAE5B;AAAA,EACD;AAEA,SAAO,SAAS,SAAU,MAAO;AAClC;AAEA,IAAM,WAAW,MAAM;AACtB,MAAK,CAAE,UAAW;AACjB,UAAM,IAAI,MAAO,oCAAqC;AAAA,EACvD;AAEA,SAAO,SAAS,SAAS;AAC1B;AAEA,IAAM,YAAY,CAAE,aAA0B;AAC7C,MAAK,CAAE,UAAW;AACjB,UAAM,IAAI,MAAO,oCAAqC;AAAA,EACvD;AAEA,SAAO,SAAS,UAAW,QAAS;AACrC;AAEA,IAAM,cAAc,MAAM;AACzB,MAAK,UAAW;AACf,UAAM,IAAI,MAAO,oCAAqC;AAAA,EACvD;AAEA,iBAAW,+BAAgB;AAAA,IAC1B,SAAS,YAAY;AAAA,IACrB,YAAY,MAAM,KAAM,WAAY;AAAA,EACrC,CAAE;AAEF,MAAK,eAAe,QAAS;AAC5B,mBAAe,QAAS,CAAE,WAAY,SAAU,MAAO,CAAE;AACzD,mBAAe,SAAS;AAAA,EACzB;AAEA,SAAO;AACR;AAEA,IAAM,WAAW,MAAM;AACtB,SAAO;AACR;AAEA,IAAM,cAAc,MAAM;AACzB,aAAW;AACX,WAAS,CAAC;AACV,iBAAe,SAAS;AACxB,cAAY,MAAM;AACnB;","names":["import_toolkit"]}
|
package/dist/index.mjs
CHANGED
|
@@ -3,8 +3,15 @@ import {
|
|
|
3
3
|
configureStore,
|
|
4
4
|
combineReducers
|
|
5
5
|
} from "@reduxjs/toolkit";
|
|
6
|
-
import {
|
|
7
|
-
|
|
6
|
+
import {
|
|
7
|
+
createSelector,
|
|
8
|
+
createSlice
|
|
9
|
+
} from "@reduxjs/toolkit";
|
|
10
|
+
import {
|
|
11
|
+
useSelector,
|
|
12
|
+
useDispatch,
|
|
13
|
+
Provider
|
|
14
|
+
} from "react-redux";
|
|
8
15
|
var instance = null;
|
|
9
16
|
var slices = {};
|
|
10
17
|
var pendingActions = [];
|
|
@@ -68,18 +75,18 @@ var deleteStore = () => {
|
|
|
68
75
|
middlewares.clear();
|
|
69
76
|
};
|
|
70
77
|
export {
|
|
71
|
-
Provider as
|
|
72
|
-
addMiddleware,
|
|
73
|
-
createSelector,
|
|
74
|
-
createSlice,
|
|
75
|
-
createStore,
|
|
76
|
-
deleteStore,
|
|
77
|
-
dispatch,
|
|
78
|
-
getState,
|
|
79
|
-
getStore,
|
|
80
|
-
registerSlice,
|
|
81
|
-
subscribe,
|
|
82
|
-
useDispatch,
|
|
83
|
-
useSelector
|
|
78
|
+
Provider as __StoreProvider,
|
|
79
|
+
addMiddleware as __addMiddleware,
|
|
80
|
+
createSelector as __createSelector,
|
|
81
|
+
createSlice as __createSlice,
|
|
82
|
+
createStore as __createStore,
|
|
83
|
+
deleteStore as __deleteStore,
|
|
84
|
+
dispatch as __dispatch,
|
|
85
|
+
getState as __getState,
|
|
86
|
+
getStore as __getStore,
|
|
87
|
+
registerSlice as __registerSlice,
|
|
88
|
+
subscribe as __subscribe,
|
|
89
|
+
useDispatch as __useDispatch,
|
|
90
|
+
useSelector as __useSelector
|
|
84
91
|
};
|
|
85
92
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n\tReducersMapObject,\n\tconfigureStore,\n\tcombineReducers,\n\tMiddleware,\n\tStore,\n\tSlice,\n\tAnyAction,\n} from '@reduxjs/toolkit';\n\nexport type {\n\tSlice,\n\tCreateSliceOptions,\n\tPayloadAction,\n\tStore,\n\tDispatch,\n\tAnyAction,\n\tAction,\n\tMiddlewareAPI,\n\tMiddleware,\n} from '@reduxjs/toolkit';\n\nexport {
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\n\tReducersMapObject,\n\tconfigureStore,\n\tcombineReducers,\n\tMiddleware,\n\tStore,\n\tSlice,\n\tAnyAction,\n} from '@reduxjs/toolkit';\n\nexport type {\n\tSlice,\n\tCreateSliceOptions,\n\tPayloadAction,\n\tStore,\n\tDispatch,\n\tAnyAction,\n\tAction,\n\tMiddlewareAPI,\n\tMiddleware,\n} from '@reduxjs/toolkit';\n\nexport {\n\tcreateSelector as __createSelector,\n\tcreateSlice as __createSlice,\n} from '@reduxjs/toolkit';\n\nexport {\n\tuseSelector as __useSelector,\n\tuseDispatch as __useDispatch,\n\tProvider as __StoreProvider,\n} from 'react-redux';\n\n/**\n * Usage:\n *\n * const mySlice = addSlice( ... );\n *\n * type MySliceState = SliceState<typeof mySlice>;\n *\n * const value = useSelector( ( state: MySliceState ) => state.mySlice.value );\n */\nexport type SliceState<S extends Slice> = {\n\t[ key in S['name'] ]: ReturnType<S['getInitialState']>;\n}\n\ninterface SlicesMap {\n\t[key: Slice['name']]: Slice;\n}\n\nlet instance: Store | null = null;\nlet slices: SlicesMap = {};\nconst pendingActions: AnyAction[] = [];\nconst middlewares = new Set<Middleware>();\n\nconst getReducers = () => {\n\tconst reducers = Object.entries( slices ).reduce( ( reducersData: ReducersMapObject, [ name, slice ] ) => {\n\t\treducersData[ name ] = slice.reducer;\n\n\t\treturn reducersData;\n\t}, {} );\n\n\treturn combineReducers( reducers );\n};\n\nfunction registerSlice( slice: Slice ) {\n\tif ( slices[ slice.name ] ) {\n\t\tthrow new Error( `Slice with name \"${ slice.name }\" already exists.` );\n\t}\n\n\tslices[ slice.name ] = slice;\n}\n\nconst addMiddleware = ( middleware: Middleware ) => {\n\tmiddlewares.add( middleware );\n};\n\nconst dispatch = ( action: AnyAction ) => {\n\tif ( ! instance ) {\n\t\tpendingActions.push( action );\n\n\t\treturn;\n\t}\n\n\treturn instance.dispatch( action );\n};\n\nconst getState = () => {\n\tif ( ! instance ) {\n\t\tthrow new Error( 'The store instance does not exist.' );\n\t}\n\n\treturn instance.getState();\n};\n\nconst subscribe = ( listener: () => void ) => {\n\tif ( ! instance ) {\n\t\tthrow new Error( 'The store instance does not exist.' );\n\t}\n\n\treturn instance.subscribe( listener );\n};\n\nconst createStore = () => {\n\tif ( instance ) {\n\t\tthrow new Error( 'The store instance already exists.' );\n\t}\n\n\tinstance = configureStore( {\n\t\treducer: getReducers(),\n\t\tmiddleware: Array.from( middlewares ),\n\t} );\n\n\tif ( pendingActions.length ) {\n\t\tpendingActions.forEach( ( action ) => dispatch( action ) );\n\t\tpendingActions.length = 0;\n\t}\n\n\treturn instance;\n};\n\nconst getStore = () => {\n\treturn instance;\n};\n\nconst deleteStore = () => {\n\tinstance = null;\n\tslices = {};\n\tpendingActions.length = 0;\n\tmiddlewares.clear();\n};\n\nexport {\n\tregisterSlice as __registerSlice,\n\taddMiddleware as __addMiddleware,\n\tdispatch as __dispatch,\n\tgetState as __getState,\n\tsubscribe as __subscribe,\n\tcreateStore as __createStore,\n\tgetStore as __getStore,\n\tdeleteStore as __deleteStore,\n};\n"],"mappings":";AAAA;AAAA,EAEC;AAAA,EACA;AAAA,OAKM;AAcP;AAAA,EACmB;AAAA,EACH;AAAA,OACT;AAEP;AAAA,EACgB;AAAA,EACA;AAAA,EACH;AAAA,OACN;AAmBP,IAAI,WAAyB;AAC7B,IAAI,SAAoB,CAAC;AACzB,IAAM,iBAA8B,CAAC;AACrC,IAAM,cAAc,oBAAI,IAAgB;AAExC,IAAM,cAAc,MAAM;AACzB,QAAM,WAAW,OAAO,QAAS,MAAO,EAAE,OAAQ,CAAE,cAAiC,CAAE,MAAM,KAAM,MAAO;AACzG,iBAAc,IAAK,IAAI,MAAM;AAE7B,WAAO;AAAA,EACR,GAAG,CAAC,CAAE;AAEN,SAAO,gBAAiB,QAAS;AAClC;AAEA,SAAS,cAAe,OAAe;AACtC,MAAK,OAAQ,MAAM,IAAK,GAAI;AAC3B,UAAM,IAAI,MAAO,oBAAqB,MAAM,IAAK,mBAAoB;AAAA,EACtE;AAEA,SAAQ,MAAM,IAAK,IAAI;AACxB;AAEA,IAAM,gBAAgB,CAAE,eAA4B;AACnD,cAAY,IAAK,UAAW;AAC7B;AAEA,IAAM,WAAW,CAAE,WAAuB;AACzC,MAAK,CAAE,UAAW;AACjB,mBAAe,KAAM,MAAO;AAE5B;AAAA,EACD;AAEA,SAAO,SAAS,SAAU,MAAO;AAClC;AAEA,IAAM,WAAW,MAAM;AACtB,MAAK,CAAE,UAAW;AACjB,UAAM,IAAI,MAAO,oCAAqC;AAAA,EACvD;AAEA,SAAO,SAAS,SAAS;AAC1B;AAEA,IAAM,YAAY,CAAE,aAA0B;AAC7C,MAAK,CAAE,UAAW;AACjB,UAAM,IAAI,MAAO,oCAAqC;AAAA,EACvD;AAEA,SAAO,SAAS,UAAW,QAAS;AACrC;AAEA,IAAM,cAAc,MAAM;AACzB,MAAK,UAAW;AACf,UAAM,IAAI,MAAO,oCAAqC;AAAA,EACvD;AAEA,aAAW,eAAgB;AAAA,IAC1B,SAAS,YAAY;AAAA,IACrB,YAAY,MAAM,KAAM,WAAY;AAAA,EACrC,CAAE;AAEF,MAAK,eAAe,QAAS;AAC5B,mBAAe,QAAS,CAAE,WAAY,SAAU,MAAO,CAAE;AACzD,mBAAe,SAAS;AAAA,EACzB;AAEA,SAAO;AACR;AAEA,IAAM,WAAW,MAAM;AACtB,SAAO;AACR;AAEA,IAAM,cAAc,MAAM;AACzB,aAAW;AACX,WAAS,CAAC;AACV,iBAAe,SAAS;AACxB,cAAY,MAAM;AACnB;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elementor/store",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"author": "Elementor Team",
|
|
6
6
|
"homepage": "https://elementor.com/",
|
|
@@ -38,5 +38,5 @@
|
|
|
38
38
|
"@reduxjs/toolkit": "^1.9.1",
|
|
39
39
|
"react-redux": "^8.1.1"
|
|
40
40
|
},
|
|
41
|
-
"gitHead": "
|
|
41
|
+
"gitHead": "7dc3971d2dd061848d6547aa2caed8332e7b9167"
|
|
42
42
|
}
|
|
@@ -2,16 +2,16 @@ import * as React from 'react';
|
|
|
2
2
|
import { PropsWithChildren } from 'react';
|
|
3
3
|
import { renderHook } from '@testing-library/react';
|
|
4
4
|
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
StoreProvider,
|
|
13
|
-
|
|
14
|
-
|
|
5
|
+
__createStore,
|
|
6
|
+
__getStore,
|
|
7
|
+
__createSlice,
|
|
8
|
+
__registerSlice,
|
|
9
|
+
__addMiddleware,
|
|
10
|
+
__dispatch,
|
|
11
|
+
__deleteStore,
|
|
12
|
+
__StoreProvider as StoreProvider,
|
|
13
|
+
__useSelector,
|
|
14
|
+
__useDispatch,
|
|
15
15
|
Dispatch,
|
|
16
16
|
AnyAction,
|
|
17
17
|
} from '../index';
|
|
@@ -27,7 +27,7 @@ interface Config {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
const createStoreEntities = ( { initialValue = 1 }: Config = {} ) => {
|
|
30
|
-
const slice =
|
|
30
|
+
const slice = __createSlice( {
|
|
31
31
|
name: 'slice',
|
|
32
32
|
initialState: {
|
|
33
33
|
value: initialValue,
|
|
@@ -39,9 +39,9 @@ const createStoreEntities = ( { initialValue = 1 }: Config = {} ) => {
|
|
|
39
39
|
},
|
|
40
40
|
} );
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
__registerSlice( slice );
|
|
43
43
|
|
|
44
|
-
const store =
|
|
44
|
+
const store = __createStore();
|
|
45
45
|
|
|
46
46
|
const wrapper = ( { children }: PropsWithChildren ) => (
|
|
47
47
|
<StoreProvider store={ store }>
|
|
@@ -61,7 +61,7 @@ describe( '@elementor/store', () => {
|
|
|
61
61
|
// Arrange.
|
|
62
62
|
const { wrapper } = createStoreEntities();
|
|
63
63
|
|
|
64
|
-
const { result } = renderHook( () =>
|
|
64
|
+
const { result } = renderHook( () => __useSelector( ( state: SliceStateRoot ) => state.slice.value ), { wrapper } );
|
|
65
65
|
|
|
66
66
|
// Assert.
|
|
67
67
|
expect( result.current ).toBe( 1 );
|
|
@@ -73,11 +73,11 @@ describe( '@elementor/store', () => {
|
|
|
73
73
|
|
|
74
74
|
// Act.
|
|
75
75
|
const { result } = renderHook( () => {
|
|
76
|
-
const dispatchAction =
|
|
76
|
+
const dispatchAction = __useDispatch();
|
|
77
77
|
|
|
78
78
|
dispatchAction( slice.actions.setValue( 3 ) );
|
|
79
79
|
|
|
80
|
-
return
|
|
80
|
+
return __useSelector( ( state: SliceStateRoot ) => state.slice.value );
|
|
81
81
|
}, { wrapper } );
|
|
82
82
|
|
|
83
83
|
// Assert.
|
|
@@ -86,7 +86,7 @@ describe( '@elementor/store', () => {
|
|
|
86
86
|
|
|
87
87
|
it( 'should throw an error when trying to add a slice with the same name more than once', () => {
|
|
88
88
|
// Arrange.
|
|
89
|
-
const slice =
|
|
89
|
+
const slice = __createSlice( {
|
|
90
90
|
name: 'slice',
|
|
91
91
|
initialState: {
|
|
92
92
|
value: 1,
|
|
@@ -94,17 +94,17 @@ describe( '@elementor/store', () => {
|
|
|
94
94
|
reducers: {},
|
|
95
95
|
} );
|
|
96
96
|
|
|
97
|
-
|
|
97
|
+
__registerSlice( slice );
|
|
98
98
|
|
|
99
99
|
// Assert.
|
|
100
100
|
expect( () => {
|
|
101
|
-
|
|
101
|
+
__registerSlice( slice );
|
|
102
102
|
} ).toThrow( 'Slice with name "slice" already exists.' );
|
|
103
103
|
} );
|
|
104
104
|
|
|
105
105
|
it( 'should throw an error when trying to re-create the store', () => {
|
|
106
106
|
// Arrange.
|
|
107
|
-
const slice =
|
|
107
|
+
const slice = __createSlice( {
|
|
108
108
|
name: 'slice',
|
|
109
109
|
initialState: {
|
|
110
110
|
value: 1,
|
|
@@ -112,17 +112,17 @@ describe( '@elementor/store', () => {
|
|
|
112
112
|
reducers: {},
|
|
113
113
|
} );
|
|
114
114
|
|
|
115
|
-
|
|
115
|
+
__registerSlice( slice );
|
|
116
116
|
|
|
117
|
-
|
|
117
|
+
__createStore();
|
|
118
118
|
|
|
119
119
|
// Assert.
|
|
120
|
-
expect( () =>
|
|
120
|
+
expect( () => __createStore() ).toThrow( 'The store instance already exists.' );
|
|
121
121
|
} );
|
|
122
122
|
|
|
123
123
|
it( 'should add a middleware that blocks the state update by not running next(action)', () => {
|
|
124
124
|
// Arrange.
|
|
125
|
-
|
|
125
|
+
__addMiddleware( () => () => () => {
|
|
126
126
|
return null;
|
|
127
127
|
} );
|
|
128
128
|
|
|
@@ -130,11 +130,11 @@ describe( '@elementor/store', () => {
|
|
|
130
130
|
|
|
131
131
|
// Act.
|
|
132
132
|
const { result } = renderHook( () => {
|
|
133
|
-
const dispatchAction =
|
|
133
|
+
const dispatchAction = __useDispatch();
|
|
134
134
|
|
|
135
135
|
dispatchAction( slice.actions.setValue( 4 ) );
|
|
136
136
|
|
|
137
|
-
return
|
|
137
|
+
return __useSelector( ( state: SliceStateRoot ) => state.slice.value );
|
|
138
138
|
}, { wrapper } );
|
|
139
139
|
|
|
140
140
|
// Assert.
|
|
@@ -145,7 +145,7 @@ describe( '@elementor/store', () => {
|
|
|
145
145
|
// Arrange.
|
|
146
146
|
const middlewareNextAction = jest.fn();
|
|
147
147
|
|
|
148
|
-
|
|
148
|
+
__addMiddleware( () => ( next: Dispatch<AnyAction> ) => ( action: AnyAction ) => {
|
|
149
149
|
middlewareNextAction( action );
|
|
150
150
|
|
|
151
151
|
next( action );
|
|
@@ -155,11 +155,11 @@ describe( '@elementor/store', () => {
|
|
|
155
155
|
|
|
156
156
|
// Act.
|
|
157
157
|
const { result } = renderHook( () => {
|
|
158
|
-
const dispatchAction =
|
|
158
|
+
const dispatchAction = __useDispatch();
|
|
159
159
|
|
|
160
160
|
dispatchAction( slice.actions.setValue( 4 ) );
|
|
161
161
|
|
|
162
|
-
return
|
|
162
|
+
return __useSelector( ( state: SliceStateRoot ) => state.slice.value );
|
|
163
163
|
}, { wrapper } );
|
|
164
164
|
|
|
165
165
|
// Assert.
|
|
@@ -170,7 +170,7 @@ describe( '@elementor/store', () => {
|
|
|
170
170
|
|
|
171
171
|
it( 'should dispatch an action without using hooks', () => {
|
|
172
172
|
// Arrange.
|
|
173
|
-
const slice =
|
|
173
|
+
const slice = __createSlice( {
|
|
174
174
|
name: 'slice',
|
|
175
175
|
initialState: {
|
|
176
176
|
value: 1,
|
|
@@ -182,9 +182,9 @@ describe( '@elementor/store', () => {
|
|
|
182
182
|
},
|
|
183
183
|
} );
|
|
184
184
|
|
|
185
|
-
|
|
185
|
+
__registerSlice( slice );
|
|
186
186
|
|
|
187
|
-
const store =
|
|
187
|
+
const store = __createStore();
|
|
188
188
|
|
|
189
189
|
// Act.
|
|
190
190
|
store.dispatch( slice.actions.setValue( 6 ) );
|
|
@@ -197,11 +197,11 @@ describe( '@elementor/store', () => {
|
|
|
197
197
|
|
|
198
198
|
it( 'should collect actions that are dispatched before the store exist, and run them when the store instance is created', () => {
|
|
199
199
|
// Act.
|
|
200
|
-
|
|
200
|
+
__dispatch( { type: 'slice/setValue', payload: 7 } );
|
|
201
201
|
|
|
202
202
|
const { wrapper } = createStoreEntities();
|
|
203
203
|
|
|
204
|
-
const { result } = renderHook( () =>
|
|
204
|
+
const { result } = renderHook( () => __useSelector( ( state: SliceStateRoot ) => state.slice.value ), { wrapper } );
|
|
205
205
|
|
|
206
206
|
// Assert.
|
|
207
207
|
expect( result.current ).toBe( 7 );
|
|
@@ -211,15 +211,15 @@ describe( '@elementor/store', () => {
|
|
|
211
211
|
// Arrange.
|
|
212
212
|
const { store } = createStoreEntities();
|
|
213
213
|
|
|
214
|
-
let instance =
|
|
214
|
+
let instance = __getStore();
|
|
215
215
|
|
|
216
216
|
// Assert.
|
|
217
217
|
expect( instance ).toEqual( store );
|
|
218
218
|
|
|
219
219
|
// Act.
|
|
220
|
-
|
|
220
|
+
__deleteStore();
|
|
221
221
|
|
|
222
|
-
instance =
|
|
222
|
+
instance = __getStore();
|
|
223
223
|
|
|
224
224
|
// Assert.
|
|
225
225
|
expect( instance ).toBeNull();
|
|
@@ -230,10 +230,10 @@ describe( '@elementor/store', () => {
|
|
|
230
230
|
createStoreEntities();
|
|
231
231
|
|
|
232
232
|
// Act.
|
|
233
|
-
|
|
233
|
+
__deleteStore();
|
|
234
234
|
|
|
235
235
|
// Arrange.
|
|
236
|
-
const store =
|
|
236
|
+
const store = __createStore();
|
|
237
237
|
|
|
238
238
|
const wrapper = ( { children }: PropsWithChildren ) => (
|
|
239
239
|
<StoreProvider store={ store }>
|
|
@@ -241,7 +241,7 @@ describe( '@elementor/store', () => {
|
|
|
241
241
|
</StoreProvider>
|
|
242
242
|
);
|
|
243
243
|
|
|
244
|
-
const { result } = renderHook( () =>
|
|
244
|
+
const { result } = renderHook( () => __useSelector( ( state: SliceStateRoot ) => state.slice ), { wrapper } );
|
|
245
245
|
|
|
246
246
|
// Assert.
|
|
247
247
|
expect( result.current ).toBeUndefined();
|
|
@@ -251,23 +251,23 @@ describe( '@elementor/store', () => {
|
|
|
251
251
|
it( 'should delete the added middlewares', () => {
|
|
252
252
|
// Arrange.
|
|
253
253
|
// Registering a middleware that blocks the state update by not running next(action).
|
|
254
|
-
|
|
254
|
+
__addMiddleware( () => () => () => {
|
|
255
255
|
return null;
|
|
256
256
|
} );
|
|
257
257
|
|
|
258
258
|
createStoreEntities();
|
|
259
259
|
|
|
260
260
|
// Act.
|
|
261
|
-
|
|
261
|
+
__deleteStore();
|
|
262
262
|
|
|
263
263
|
const { slice, wrapper } = createStoreEntities();
|
|
264
264
|
|
|
265
265
|
const { result } = renderHook( () => {
|
|
266
|
-
const dispatchAction =
|
|
266
|
+
const dispatchAction = __useDispatch();
|
|
267
267
|
|
|
268
268
|
dispatchAction( slice.actions.setValue( 8 ) );
|
|
269
269
|
|
|
270
|
-
return
|
|
270
|
+
return __useSelector( ( state: SliceStateRoot ) => state.slice.value );
|
|
271
271
|
}, { wrapper } );
|
|
272
272
|
|
|
273
273
|
// Assert.
|
package/src/index.ts
CHANGED
|
@@ -20,9 +20,16 @@ export type {
|
|
|
20
20
|
Middleware,
|
|
21
21
|
} from '@reduxjs/toolkit';
|
|
22
22
|
|
|
23
|
-
export {
|
|
23
|
+
export {
|
|
24
|
+
createSelector as __createSelector,
|
|
25
|
+
createSlice as __createSlice,
|
|
26
|
+
} from '@reduxjs/toolkit';
|
|
24
27
|
|
|
25
|
-
export {
|
|
28
|
+
export {
|
|
29
|
+
useSelector as __useSelector,
|
|
30
|
+
useDispatch as __useDispatch,
|
|
31
|
+
Provider as __StoreProvider,
|
|
32
|
+
} from 'react-redux';
|
|
26
33
|
|
|
27
34
|
/**
|
|
28
35
|
* Usage:
|
|
@@ -56,7 +63,7 @@ const getReducers = () => {
|
|
|
56
63
|
return combineReducers( reducers );
|
|
57
64
|
};
|
|
58
65
|
|
|
59
|
-
|
|
66
|
+
function registerSlice( slice: Slice ) {
|
|
60
67
|
if ( slices[ slice.name ] ) {
|
|
61
68
|
throw new Error( `Slice with name "${ slice.name }" already exists.` );
|
|
62
69
|
}
|
|
@@ -64,11 +71,11 @@ export function registerSlice( slice: Slice ) {
|
|
|
64
71
|
slices[ slice.name ] = slice;
|
|
65
72
|
}
|
|
66
73
|
|
|
67
|
-
|
|
74
|
+
const addMiddleware = ( middleware: Middleware ) => {
|
|
68
75
|
middlewares.add( middleware );
|
|
69
76
|
};
|
|
70
77
|
|
|
71
|
-
|
|
78
|
+
const dispatch = ( action: AnyAction ) => {
|
|
72
79
|
if ( ! instance ) {
|
|
73
80
|
pendingActions.push( action );
|
|
74
81
|
|
|
@@ -78,7 +85,7 @@ export const dispatch = ( action: AnyAction ) => {
|
|
|
78
85
|
return instance.dispatch( action );
|
|
79
86
|
};
|
|
80
87
|
|
|
81
|
-
|
|
88
|
+
const getState = () => {
|
|
82
89
|
if ( ! instance ) {
|
|
83
90
|
throw new Error( 'The store instance does not exist.' );
|
|
84
91
|
}
|
|
@@ -86,7 +93,7 @@ export const getState = () => {
|
|
|
86
93
|
return instance.getState();
|
|
87
94
|
};
|
|
88
95
|
|
|
89
|
-
|
|
96
|
+
const subscribe = ( listener: () => void ) => {
|
|
90
97
|
if ( ! instance ) {
|
|
91
98
|
throw new Error( 'The store instance does not exist.' );
|
|
92
99
|
}
|
|
@@ -94,7 +101,7 @@ export const subscribe = ( listener: () => void ) => {
|
|
|
94
101
|
return instance.subscribe( listener );
|
|
95
102
|
};
|
|
96
103
|
|
|
97
|
-
|
|
104
|
+
const createStore = () => {
|
|
98
105
|
if ( instance ) {
|
|
99
106
|
throw new Error( 'The store instance already exists.' );
|
|
100
107
|
}
|
|
@@ -112,13 +119,24 @@ export const createStore = () => {
|
|
|
112
119
|
return instance;
|
|
113
120
|
};
|
|
114
121
|
|
|
115
|
-
|
|
122
|
+
const getStore = () => {
|
|
116
123
|
return instance;
|
|
117
124
|
};
|
|
118
125
|
|
|
119
|
-
|
|
126
|
+
const deleteStore = () => {
|
|
120
127
|
instance = null;
|
|
121
128
|
slices = {};
|
|
122
129
|
pendingActions.length = 0;
|
|
123
130
|
middlewares.clear();
|
|
124
131
|
};
|
|
132
|
+
|
|
133
|
+
export {
|
|
134
|
+
registerSlice as __registerSlice,
|
|
135
|
+
addMiddleware as __addMiddleware,
|
|
136
|
+
dispatch as __dispatch,
|
|
137
|
+
getState as __getState,
|
|
138
|
+
subscribe as __subscribe,
|
|
139
|
+
createStore as __createStore,
|
|
140
|
+
getStore as __getStore,
|
|
141
|
+
deleteStore as __deleteStore,
|
|
142
|
+
};
|