@apia/store 3.0.1 → 3.0.2
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/dist/index.d.ts +61 -4
- package/dist/index.js +40 -4
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/store.d.ts +0 -61
- package/dist/store.d.ts.map +0 -1
- package/dist/store.js +0 -65
- package/dist/store.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,69 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
2
3
|
import * as redux from 'redux';
|
|
3
4
|
import * as store from 'react-redux';
|
|
5
|
+
import { EqualityFn } from 'react-redux';
|
|
4
6
|
export { shallowEqual } from 'react-redux';
|
|
5
7
|
export { Draft } from 'immer';
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
+
import { Action, AnyAction, StoreEnhancer, ReducersMapObject, EnhancedStore, ThunkMiddleware, ImmutableStateInvariantMiddlewareOptions, SerializableStateInvariantMiddlewareOptions, Dispatch, MiddlewareAPI } from '@reduxjs/toolkit';
|
|
9
|
+
import * as toolkit from '@reduxjs/toolkit';
|
|
10
|
+
export { toolkit as reduxjsToolkit };
|
|
8
11
|
export { AnyAction, CaseReducer, PayloadAction, Slice, SliceCaseReducers, createSlice } from '@reduxjs/toolkit';
|
|
9
|
-
|
|
12
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
13
|
+
|
|
14
|
+
type TypedUseSelectorHook<TState> = <TSelected>(selector: (state: TState) => TSelected, equalityFn?: EqualityFn<TSelected>) => TSelected;
|
|
15
|
+
/**
|
|
16
|
+
* Esta función permite agregar reducers al store en forma dinámica.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
*
|
|
20
|
+
import { injectReducers, createSlice } from '@apia/store';
|
|
21
|
+
|
|
22
|
+
const slice = createSlice({
|
|
23
|
+
name: 'holaMundo',
|
|
24
|
+
initialState: {
|
|
25
|
+
hola: 'mundo',
|
|
26
|
+
} as { hola: string },
|
|
27
|
+
reducers: {
|
|
28
|
+
updateMundo(state) {
|
|
29
|
+
state.hola = 'world';
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
const store = injectReducers({
|
|
35
|
+
holaMundo: slice.reducer,
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
store.dispatch(slice.actions.updateMundo());
|
|
39
|
+
|
|
40
|
+
// Ahora el store dice hola: 'world'
|
|
41
|
+
*/
|
|
42
|
+
type Enhancers = readonly StoreEnhancer[];
|
|
43
|
+
interface ThunkOptions<E = any> {
|
|
44
|
+
extraArgument: E;
|
|
45
|
+
}
|
|
46
|
+
interface GetDefaultMiddlewareOptions {
|
|
47
|
+
thunk?: boolean | ThunkOptions;
|
|
48
|
+
immutableCheck?: boolean | ImmutableStateInvariantMiddlewareOptions;
|
|
49
|
+
serializableCheck?: boolean | SerializableStateInvariantMiddlewareOptions;
|
|
50
|
+
}
|
|
51
|
+
type ThunkMiddlewareFor<S, O extends GetDefaultMiddlewareOptions = {}> = O extends {
|
|
52
|
+
thunk: false;
|
|
53
|
+
} ? never : O extends {
|
|
54
|
+
thunk: {
|
|
55
|
+
extraArgument: infer E;
|
|
56
|
+
};
|
|
57
|
+
} ? ThunkMiddleware<S, AnyAction, E> : ThunkMiddleware<S>;
|
|
58
|
+
type Middleware<S = any, D extends Dispatch = Dispatch> = (api: MiddlewareAPI<D, S>) => (next: Dispatch) => (action: any) => any;
|
|
59
|
+
type Middlewares<S> = readonly Middleware<S>[];
|
|
60
|
+
declare function injectReducers<S, A extends Action = AnyAction, M extends Middlewares<S> = [ThunkMiddlewareFor<S>], E extends Enhancers = [StoreEnhancer]>(reducers: ReducersMapObject<S, A>): {
|
|
61
|
+
store: EnhancedStore<S, A, M, E>;
|
|
62
|
+
useSelector: TypedUseSelectorHook<S>;
|
|
63
|
+
};
|
|
64
|
+
declare const StoreProvider: ({ children }: {
|
|
65
|
+
children: ReactNode;
|
|
66
|
+
}) => react_jsx_runtime.JSX.Element;
|
|
10
67
|
|
|
11
68
|
declare const reactRedux: {
|
|
12
69
|
batch: typeof store.batch;
|
|
@@ -21,5 +78,5 @@ declare const reactRedux: {
|
|
|
21
78
|
shallowEqual: typeof store.shallowEqual;
|
|
22
79
|
};
|
|
23
80
|
|
|
24
|
-
export { reactRedux };
|
|
81
|
+
export { StoreProvider, injectReducers, reactRedux };
|
|
25
82
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -1,14 +1,50 @@
|
|
|
1
|
-
import * as store from 'react-redux';
|
|
1
|
+
import * as store$1 from 'react-redux';
|
|
2
|
+
import { Provider, useSelector } from 'react-redux';
|
|
2
3
|
export { shallowEqual } from 'react-redux';
|
|
4
|
+
import { configureStore, combineReducers, createSlice } from '@reduxjs/toolkit';
|
|
3
5
|
import * as toolkit from '@reduxjs/toolkit';
|
|
4
6
|
export { toolkit as reduxjsToolkit };
|
|
5
7
|
export { createSlice } from '@reduxjs/toolkit';
|
|
6
|
-
|
|
8
|
+
import { jsx } from 'react/jsx-runtime';
|
|
7
9
|
|
|
8
|
-
const
|
|
10
|
+
const injectedReducers = {};
|
|
11
|
+
const store = configureStore({
|
|
12
|
+
middleware: (getDefaultMiddleware) => getDefaultMiddleware({
|
|
13
|
+
serializableCheck: false,
|
|
14
|
+
immutableCheck: false
|
|
15
|
+
}),
|
|
16
|
+
devTools: false,
|
|
17
|
+
reducer: combineReducers({
|
|
18
|
+
defaultSlice: createSlice({
|
|
19
|
+
name: "defaultSlice",
|
|
20
|
+
initialState: {},
|
|
21
|
+
reducers: {
|
|
22
|
+
update() {
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}).reducer
|
|
26
|
+
})
|
|
27
|
+
});
|
|
28
|
+
function injectReducers(reducers) {
|
|
29
|
+
Object.entries(reducers).forEach(([name, value]) => {
|
|
30
|
+
injectedReducers[name] = value;
|
|
31
|
+
});
|
|
32
|
+
const newReducer = combineReducers(injectedReducers);
|
|
33
|
+
store.replaceReducer(newReducer);
|
|
34
|
+
const newUseSelector = useSelector;
|
|
35
|
+
return {
|
|
36
|
+
store,
|
|
37
|
+
useSelector: newUseSelector
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
const StoreProvider = ({ children }) => {
|
|
41
|
+
return /* @__PURE__ */ jsx(Provider, { store, children });
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const { useSelector: nomatter, ...reactReduxRest } = store$1;
|
|
9
45
|
const reactRedux = {
|
|
10
46
|
...reactReduxRest
|
|
11
47
|
};
|
|
12
48
|
|
|
13
|
-
export { reactRedux };
|
|
49
|
+
export { StoreProvider, injectReducers, reactRedux };
|
|
14
50
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["/* eslint-disable no-restricted-imports */\n/* eslint-disable @typescript-eslint/no-unused-vars */\n\nimport * as store from 'react-redux';\n\nconst { useSelector: nomatter, ...reactReduxRest } = store;\nexport const reactRedux = {\n ...reactReduxRest,\n};\n\nexport type { Draft } from 'immer';\n\nexport { createSlice } from '@reduxjs/toolkit';\n\nexport type {\n PayloadAction,\n AnyAction,\n CaseReducer,\n SliceCaseReducers,\n Slice,\n} from '@reduxjs/toolkit';\n\nexport { shallowEqual } from 'react-redux';\n\nexport { StoreProvider, injectReducers } from './store';\n\nexport * as reduxjsToolkit from '@reduxjs/toolkit';\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/store.tsx","../src/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-types */\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport {\r\n configureStore,\r\n combineReducers,\r\n Reducer,\r\n Action,\r\n AnyAction,\r\n ReducersMapObject,\r\n createSlice,\r\n EnhancedStore,\r\n Dispatch,\r\n MiddlewareAPI,\r\n StoreEnhancer,\r\n SerializableStateInvariantMiddlewareOptions,\r\n ImmutableStateInvariantMiddlewareOptions,\r\n ThunkMiddleware,\r\n} from '@reduxjs/toolkit';\r\nimport { ReactNode } from 'react';\r\nimport { EqualityFn, Provider, useSelector } from 'react-redux';\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst injectedReducers: ReducersMapObject<any, any> = {};\r\n\r\nconst store = configureStore({\r\n middleware: (getDefaultMiddleware) =>\r\n getDefaultMiddleware({\r\n serializableCheck: false,\r\n immutableCheck: false,\r\n }),\r\n devTools: false,\r\n reducer: combineReducers({\r\n defaultSlice: createSlice({\r\n name: 'defaultSlice',\r\n initialState: {},\r\n reducers: {\r\n update() {},\r\n },\r\n }).reducer,\r\n }),\r\n});\r\n\r\ntype TypedUseSelectorHook<TState> = <TSelected>(\r\n selector: (state: TState) => TSelected,\r\n equalityFn?: EqualityFn<TSelected>,\r\n) => TSelected;\r\n\r\n/**\r\n * Esta función permite agregar reducers al store en forma dinámica.\r\n *\r\n * @example\r\n *\r\n import { injectReducers, createSlice } from '@apia/store';\r\n\r\n const slice = createSlice({\r\n name: 'holaMundo',\r\n initialState: {\r\n hola: 'mundo',\r\n } as { hola: string },\r\n reducers: {\r\n updateMundo(state) {\r\n state.hola = 'world';\r\n },\r\n },\r\n });\r\n\r\n const store = injectReducers({\r\n holaMundo: slice.reducer,\r\n });\r\n\r\n store.dispatch(slice.actions.updateMundo());\r\n\r\n // Ahora el store dice hola: 'world'\r\n */\r\ntype Enhancers = readonly StoreEnhancer[];\r\ninterface ThunkOptions<E = any> {\r\n extraArgument: E;\r\n}\r\ninterface GetDefaultMiddlewareOptions {\r\n thunk?: boolean | ThunkOptions;\r\n immutableCheck?: boolean | ImmutableStateInvariantMiddlewareOptions;\r\n serializableCheck?: boolean | SerializableStateInvariantMiddlewareOptions;\r\n}\r\n\r\ntype ThunkMiddlewareFor<\r\n S,\r\n O extends GetDefaultMiddlewareOptions = {},\r\n> = O extends {\r\n thunk: false;\r\n}\r\n ? never\r\n : O extends {\r\n thunk: {\r\n extraArgument: infer E;\r\n };\r\n }\r\n ? ThunkMiddleware<S, AnyAction, E>\r\n : ThunkMiddleware<S>;\r\n\r\nexport type Middleware<S = any, D extends Dispatch = Dispatch> = (\r\n api: MiddlewareAPI<D, S>,\r\n) => (next: Dispatch) => (action: any) => any;\r\ntype Middlewares<S> = readonly Middleware<S>[];\r\n\r\nexport function injectReducers<\r\n S,\r\n A extends Action = AnyAction,\r\n M extends Middlewares<S> = [ThunkMiddlewareFor<S>],\r\n E extends Enhancers = [StoreEnhancer],\r\n>(reducers: ReducersMapObject<S, A>) {\r\n Object.entries(reducers).forEach(([name, value]) => {\r\n injectedReducers[name] = value as Reducer;\r\n });\r\n\r\n const newReducer = combineReducers(injectedReducers);\r\n store.replaceReducer(newReducer);\r\n const newUseSelector: TypedUseSelectorHook<S> = useSelector;\r\n\r\n return {\r\n store: store as EnhancedStore<S, A, M, E>,\r\n useSelector: newUseSelector,\r\n };\r\n}\r\n\r\nexport const StoreProvider = ({ children }: { children: ReactNode }) => {\r\n return <Provider store={store}>{children}</Provider>;\r\n};\r\n","/* eslint-disable no-restricted-imports */\r\n/* eslint-disable @typescript-eslint/no-unused-vars */\r\n\r\nimport * as store from 'react-redux';\r\n\r\nconst { useSelector: nomatter, ...reactReduxRest } = store;\r\nexport const reactRedux = {\r\n ...reactReduxRest,\r\n};\r\n\r\nexport type { Draft } from 'immer';\r\n\r\nexport { createSlice } from '@reduxjs/toolkit';\r\n\r\nexport type {\r\n PayloadAction,\r\n AnyAction,\r\n CaseReducer,\r\n SliceCaseReducers,\r\n Slice,\r\n} from '@reduxjs/toolkit';\r\n\r\nexport { shallowEqual } from 'react-redux';\r\n\r\nexport { StoreProvider, injectReducers } from './store';\r\n\r\nexport * as reduxjsToolkit from '@reduxjs/toolkit';\r\n"],"names":["store"],"mappings":";;;;;;;;;AAsBA,MAAM,mBAAgD,EAAC,CAAA;AAEvD,MAAM,QAAQ,cAAe,CAAA;AAAA,EAC3B,UAAA,EAAY,CAAC,oBAAA,KACX,oBAAqB,CAAA;AAAA,IACnB,iBAAmB,EAAA,KAAA;AAAA,IACnB,cAAgB,EAAA,KAAA;AAAA,GACjB,CAAA;AAAA,EACH,QAAU,EAAA,KAAA;AAAA,EACV,SAAS,eAAgB,CAAA;AAAA,IACvB,cAAc,WAAY,CAAA;AAAA,MACxB,IAAM,EAAA,cAAA;AAAA,MACN,cAAc,EAAC;AAAA,MACf,QAAU,EAAA;AAAA,QACR,MAAS,GAAA;AAAA,SAAC;AAAA,OACZ;AAAA,KACD,CAAE,CAAA,OAAA;AAAA,GACJ,CAAA;AACH,CAAC,CAAA,CAAA;AAgEM,SAAS,eAKd,QAAmC,EAAA;AACnC,EAAO,MAAA,CAAA,OAAA,CAAQ,QAAQ,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAC,IAAA,EAAM,KAAK,CAAM,KAAA;AAClD,IAAA,gBAAA,CAAiB,IAAI,CAAI,GAAA,KAAA,CAAA;AAAA,GAC1B,CAAA,CAAA;AAED,EAAM,MAAA,UAAA,GAAa,gBAAgB,gBAAgB,CAAA,CAAA;AACnD,EAAA,KAAA,CAAM,eAAe,UAAU,CAAA,CAAA;AAC/B,EAAA,MAAM,cAA0C,GAAA,WAAA,CAAA;AAEhD,EAAO,OAAA;AAAA,IACL,KAAA;AAAA,IACA,WAAa,EAAA,cAAA;AAAA,GACf,CAAA;AACF,CAAA;AAEO,MAAM,aAAgB,GAAA,CAAC,EAAE,QAAA,EAAwC,KAAA;AACtE,EAAO,uBAAA,GAAA,CAAC,QAAS,EAAA,EAAA,KAAA,EAAe,QAAS,EAAA,CAAA,CAAA;AAC3C;;ACzHA,MAAM,EAAE,WAAA,EAAa,QAAU,EAAA,GAAG,gBAAmB,GAAAA,OAAA,CAAA;AAC9C,MAAM,UAAa,GAAA;AAAA,EACxB,GAAG,cAAA;AACL;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apia/store",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.2",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"author": "Alexis Leite <alexisleite@live.com>",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -34,5 +34,5 @@
|
|
|
34
34
|
"access": "public",
|
|
35
35
|
"registry": "https://registry.npmjs.org/"
|
|
36
36
|
},
|
|
37
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "1be67c2956d7c0964b4e8a18173af7cde3fc534e"
|
|
38
38
|
}
|
package/dist/store.d.ts
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { Action, AnyAction, StoreEnhancer, ReducersMapObject, EnhancedStore, ThunkMiddleware, ImmutableStateInvariantMiddlewareOptions, SerializableStateInvariantMiddlewareOptions, Dispatch, MiddlewareAPI } from '@reduxjs/toolkit';
|
|
3
|
-
import { ReactNode } from 'react';
|
|
4
|
-
import { EqualityFn } from 'react-redux';
|
|
5
|
-
|
|
6
|
-
type TypedUseSelectorHook<TState> = <TSelected>(selector: (state: TState) => TSelected, equalityFn?: EqualityFn<TSelected>) => TSelected;
|
|
7
|
-
/**
|
|
8
|
-
* Esta función permite agregar reducers al store en forma dinámica.
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
*
|
|
12
|
-
import { injectReducers, createSlice } from '@apia/store';
|
|
13
|
-
|
|
14
|
-
const slice = createSlice({
|
|
15
|
-
name: 'holaMundo',
|
|
16
|
-
initialState: {
|
|
17
|
-
hola: 'mundo',
|
|
18
|
-
} as { hola: string },
|
|
19
|
-
reducers: {
|
|
20
|
-
updateMundo(state) {
|
|
21
|
-
state.hola = 'world';
|
|
22
|
-
},
|
|
23
|
-
},
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
const store = injectReducers({
|
|
27
|
-
holaMundo: slice.reducer,
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
store.dispatch(slice.actions.updateMundo());
|
|
31
|
-
|
|
32
|
-
// Ahora el store dice hola: 'world'
|
|
33
|
-
*/
|
|
34
|
-
type Enhancers = readonly StoreEnhancer[];
|
|
35
|
-
interface ThunkOptions<E = any> {
|
|
36
|
-
extraArgument: E;
|
|
37
|
-
}
|
|
38
|
-
interface GetDefaultMiddlewareOptions {
|
|
39
|
-
thunk?: boolean | ThunkOptions;
|
|
40
|
-
immutableCheck?: boolean | ImmutableStateInvariantMiddlewareOptions;
|
|
41
|
-
serializableCheck?: boolean | SerializableStateInvariantMiddlewareOptions;
|
|
42
|
-
}
|
|
43
|
-
type ThunkMiddlewareFor<S, O extends GetDefaultMiddlewareOptions = {}> = O extends {
|
|
44
|
-
thunk: false;
|
|
45
|
-
} ? never : O extends {
|
|
46
|
-
thunk: {
|
|
47
|
-
extraArgument: infer E;
|
|
48
|
-
};
|
|
49
|
-
} ? ThunkMiddleware<S, AnyAction, E> : ThunkMiddleware<S>;
|
|
50
|
-
type Middleware<S = any, D extends Dispatch = Dispatch> = (api: MiddlewareAPI<D, S>) => (next: Dispatch) => (action: any) => any;
|
|
51
|
-
type Middlewares<S> = readonly Middleware<S>[];
|
|
52
|
-
declare function injectReducers<S, A extends Action = AnyAction, M extends Middlewares<S> = [ThunkMiddlewareFor<S>], E extends Enhancers = [StoreEnhancer]>(reducers: ReducersMapObject<S, A>): {
|
|
53
|
-
store: EnhancedStore<S, A, M, E>;
|
|
54
|
-
useSelector: TypedUseSelectorHook<S>;
|
|
55
|
-
};
|
|
56
|
-
declare const StoreProvider: ({ children }: {
|
|
57
|
-
children: ReactNode;
|
|
58
|
-
}) => react_jsx_runtime.JSX.Element;
|
|
59
|
-
|
|
60
|
-
export { type Middleware, StoreProvider, injectReducers };
|
|
61
|
-
//# sourceMappingURL=store.d.ts.map
|
package/dist/store.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/dist/store.js
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { configureStore, combineReducers, createSlice } from '@reduxjs/toolkit';
|
|
3
|
-
import { Provider, useSelector } from 'react-redux';
|
|
4
|
-
|
|
5
|
-
const injectedReducers = {};
|
|
6
|
-
const store = configureStore({
|
|
7
|
-
devTools: {
|
|
8
|
-
actionSanitizer: (action) => {
|
|
9
|
-
if ([
|
|
10
|
-
"responsiveTableSlice/handleKey",
|
|
11
|
-
"responsiveTableSlice/update",
|
|
12
|
-
"responsiveTableSlice/addRows"
|
|
13
|
-
].includes(action.type))
|
|
14
|
-
return {
|
|
15
|
-
...action,
|
|
16
|
-
payload: `Sanitized due to performance ${action.type}`
|
|
17
|
-
};
|
|
18
|
-
return action;
|
|
19
|
-
}
|
|
20
|
-
},
|
|
21
|
-
middleware: (defaultMiddleWare) => {
|
|
22
|
-
return defaultMiddleWare({
|
|
23
|
-
immutableCheck: {
|
|
24
|
-
ignoredPaths: ["responsiveTableSlice"]
|
|
25
|
-
},
|
|
26
|
-
serializableCheck: {
|
|
27
|
-
ignoredPaths: ["responsiveTableSlice", "panelsSlice"],
|
|
28
|
-
ignoredActions: [
|
|
29
|
-
"responsiveTableSlice/handleKey",
|
|
30
|
-
"responsiveTableSlice/update",
|
|
31
|
-
"responsiveTableSlice/addRows",
|
|
32
|
-
"panelsSlice/updatePanelStore"
|
|
33
|
-
]
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
},
|
|
37
|
-
reducer: combineReducers({
|
|
38
|
-
defaultSlice: createSlice({
|
|
39
|
-
name: "defaultSlice",
|
|
40
|
-
initialState: {},
|
|
41
|
-
reducers: {
|
|
42
|
-
update() {
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}).reducer
|
|
46
|
-
})
|
|
47
|
-
});
|
|
48
|
-
function injectReducers(reducers) {
|
|
49
|
-
Object.entries(reducers).forEach(([name, value]) => {
|
|
50
|
-
injectedReducers[name] = value;
|
|
51
|
-
});
|
|
52
|
-
const newReducer = combineReducers(injectedReducers);
|
|
53
|
-
store.replaceReducer(newReducer);
|
|
54
|
-
const newUseSelector = useSelector;
|
|
55
|
-
return {
|
|
56
|
-
store,
|
|
57
|
-
useSelector: newUseSelector
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
const StoreProvider = ({ children }) => {
|
|
61
|
-
return /* @__PURE__ */ jsx(Provider, { store, children });
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
export { StoreProvider, injectReducers, store };
|
|
65
|
-
//# sourceMappingURL=store.js.map
|
package/dist/store.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sources":["../src/store.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n configureStore,\n combineReducers,\n Reducer,\n Action,\n AnyAction,\n ReducersMapObject,\n createSlice,\n EnhancedStore,\n Dispatch,\n MiddlewareAPI,\n StoreEnhancer,\n SerializableStateInvariantMiddlewareOptions,\n ImmutableStateInvariantMiddlewareOptions,\n ThunkMiddleware,\n} from '@reduxjs/toolkit';\nimport { ReactNode } from 'react';\nimport { EqualityFn, Provider, useSelector } from 'react-redux';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst injectedReducers: ReducersMapObject<any, any> = {};\n\nexport const store = configureStore({\n devTools: {\n actionSanitizer: (action) => {\n if (\n [\n 'responsiveTableSlice/handleKey',\n 'responsiveTableSlice/update',\n 'responsiveTableSlice/addRows',\n ].includes(action.type as string)\n )\n return {\n ...action,\n payload: `Sanitized due to performance ${action.type as string}`,\n };\n return action;\n },\n },\n middleware: (defaultMiddleWare) => {\n return defaultMiddleWare({\n immutableCheck: {\n ignoredPaths: ['responsiveTableSlice'],\n },\n serializableCheck: {\n ignoredPaths: ['responsiveTableSlice', 'panelsSlice'],\n ignoredActions: [\n 'responsiveTableSlice/handleKey',\n 'responsiveTableSlice/update',\n 'responsiveTableSlice/addRows',\n 'panelsSlice/updatePanelStore',\n ],\n },\n });\n },\n reducer: combineReducers({\n defaultSlice: createSlice({\n name: 'defaultSlice',\n initialState: {},\n reducers: {\n update() {},\n },\n }).reducer,\n }),\n});\n\ntype TypedUseSelectorHook<TState> = <TSelected>(\n selector: (state: TState) => TSelected,\n equalityFn?: EqualityFn<TSelected>,\n) => TSelected;\n\n/**\n * Esta función permite agregar reducers al store en forma dinámica.\n *\n * @example\n *\n import { injectReducers, createSlice } from '@apia/store';\n\n const slice = createSlice({\n name: 'holaMundo',\n initialState: {\n hola: 'mundo',\n } as { hola: string },\n reducers: {\n updateMundo(state) {\n state.hola = 'world';\n },\n },\n });\n\n const store = injectReducers({\n holaMundo: slice.reducer,\n });\n\n store.dispatch(slice.actions.updateMundo());\n\n // Ahora el store dice hola: 'world'\n */\ntype Enhancers = readonly StoreEnhancer[];\ninterface ThunkOptions<E = any> {\n extraArgument: E;\n}\ninterface GetDefaultMiddlewareOptions {\n thunk?: boolean | ThunkOptions;\n immutableCheck?: boolean | ImmutableStateInvariantMiddlewareOptions;\n serializableCheck?: boolean | SerializableStateInvariantMiddlewareOptions;\n}\n\ntype ThunkMiddlewareFor<\n S,\n O extends GetDefaultMiddlewareOptions = {},\n> = O extends {\n thunk: false;\n}\n ? never\n : O extends {\n thunk: {\n extraArgument: infer E;\n };\n }\n ? ThunkMiddleware<S, AnyAction, E>\n : ThunkMiddleware<S>;\n\nexport type Middleware<S = any, D extends Dispatch = Dispatch> = (\n api: MiddlewareAPI<D, S>,\n) => (next: Dispatch) => (action: any) => any;\ntype Middlewares<S> = readonly Middleware<S>[];\n\nexport function injectReducers<\n S,\n A extends Action = AnyAction,\n M extends Middlewares<S> = [ThunkMiddlewareFor<S>],\n E extends Enhancers = [StoreEnhancer],\n>(reducers: ReducersMapObject<S, A>) {\n Object.entries(reducers).forEach(([name, value]) => {\n injectedReducers[name] = value as Reducer;\n });\n\n const newReducer = combineReducers(injectedReducers);\n store.replaceReducer(newReducer);\n const newUseSelector: TypedUseSelectorHook<S> = useSelector;\n\n return {\n store: store as EnhancedStore<S, A, M, E>,\n useSelector: newUseSelector,\n };\n}\n\nexport const StoreProvider = ({ children }: { children: ReactNode }) => {\n return <Provider store={store}>{children}</Provider>;\n};\n"],"names":[],"mappings":";;;;AAsBA,MAAM,mBAAgD,EAAC,CAAA;AAEhD,MAAM,QAAQ,cAAe,CAAA;AAAA,EAClC,QAAU,EAAA;AAAA,IACR,eAAA,EAAiB,CAAC,MAAW,KAAA;AAC3B,MACE,IAAA;AAAA,QACE,gCAAA;AAAA,QACA,6BAAA;AAAA,QACA,8BAAA;AAAA,OACF,CAAE,QAAS,CAAA,MAAA,CAAO,IAAc,CAAA;AAEhC,QAAO,OAAA;AAAA,UACL,GAAG,MAAA;AAAA,UACH,OAAA,EAAS,CAAgC,6BAAA,EAAA,MAAA,CAAO,IAAc,CAAA,CAAA;AAAA,SAChE,CAAA;AACF,MAAO,OAAA,MAAA,CAAA;AAAA,KACT;AAAA,GACF;AAAA,EACA,UAAA,EAAY,CAAC,iBAAsB,KAAA;AACjC,IAAA,OAAO,iBAAkB,CAAA;AAAA,MACvB,cAAgB,EAAA;AAAA,QACd,YAAA,EAAc,CAAC,sBAAsB,CAAA;AAAA,OACvC;AAAA,MACA,iBAAmB,EAAA;AAAA,QACjB,YAAA,EAAc,CAAC,sBAAA,EAAwB,aAAa,CAAA;AAAA,QACpD,cAAgB,EAAA;AAAA,UACd,gCAAA;AAAA,UACA,6BAAA;AAAA,UACA,8BAAA;AAAA,UACA,8BAAA;AAAA,SACF;AAAA,OACF;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AAAA,EACA,SAAS,eAAgB,CAAA;AAAA,IACvB,cAAc,WAAY,CAAA;AAAA,MACxB,IAAM,EAAA,cAAA;AAAA,MACN,cAAc,EAAC;AAAA,MACf,QAAU,EAAA;AAAA,QACR,MAAS,GAAA;AAAA,SAAC;AAAA,OACZ;AAAA,KACD,CAAE,CAAA,OAAA;AAAA,GACJ,CAAA;AACH,CAAC,EAAA;AAgEM,SAAS,eAKd,QAAmC,EAAA;AACnC,EAAO,MAAA,CAAA,OAAA,CAAQ,QAAQ,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAC,IAAA,EAAM,KAAK,CAAM,KAAA;AAClD,IAAA,gBAAA,CAAiB,IAAI,CAAI,GAAA,KAAA,CAAA;AAAA,GAC1B,CAAA,CAAA;AAED,EAAM,MAAA,UAAA,GAAa,gBAAgB,gBAAgB,CAAA,CAAA;AACnD,EAAA,KAAA,CAAM,eAAe,UAAU,CAAA,CAAA;AAC/B,EAAA,MAAM,cAA0C,GAAA,WAAA,CAAA;AAEhD,EAAO,OAAA;AAAA,IACL,KAAA;AAAA,IACA,WAAa,EAAA,cAAA;AAAA,GACf,CAAA;AACF,CAAA;AAEO,MAAM,aAAgB,GAAA,CAAC,EAAE,QAAA,EAAwC,KAAA;AACtE,EAAO,uBAAA,GAAA,CAAC,QAAS,EAAA,EAAA,KAAA,EAAe,QAAS,EAAA,CAAA,CAAA;AAC3C;;;;"}
|