@zenithcore/core
Version:
Core functionality for ZenithKernel framework
109 lines (98 loc) • 2.25 kB
text/typescript
/**
* ZenithStore - Type-Safe Immutable State Management
* Export all store-related functionality
*/
// Core store
export {
ZenithStore,
createStore,
createAction,
createAsyncAction,
immer,
middleware
} from './ZenithStore';
// React hooks
export {
useStore,
useSelector,
useDispatch,
useStoreState,
useSignalSelector,
useObservableSelector,
useAsyncAction,
useOptimisticUpdate,
useTimeTravel,
StoreProvider,
connectStore,
createStoreHooks,
createSelector,
combineSelectors,
registerStore,
getStore
} from './storeHooks';
// Observable state management
export {
ObservableStateManager,
createObservableStateManager,
stateOperators,
asyncStateHelpers
} from './observableState';
// Types
export type {
Action,
Reducer,
StoreConfig,
Middleware,
Selector,
SubscriptionOptions,
ObservableStateSlice,
EffectConfig,
AsyncState,
DataFetchConfig
} from './ZenithStore';
/**
* Create a complete store setup with all features
*/
export function createCompleteStore<State extends Record<string, any>>(
config: import('./ZenithStore').StoreConfig<State>
) {
const store = createStore(config);
const observableManager = createObservableStateManager(store);
const hooks = createStoreHooks<State>();
return {
store,
observableManager,
hooks,
// Convenience methods
dispatch: store.dispatch.bind(store),
getState: store.getState.bind(store),
select: store.select.bind(store),
subscribe: store.subscribe.bind(store),
// Observable methods
createEffect: observableManager.createEffect.bind(observableManager),
createDataFetcher: observableManager.createDataFetcher.bind(observableManager),
// Cleanup
dispose: () => {
store.dispose();
observableManager.dispose();
}
};
}
/**
* Quick setup function for development
*/
export function setupDevStore<State extends Record<string, any>>(
initialState: State,
reducers: Record<string, import('./ZenithStore').Reducer<any, any>>
) {
return createCompleteStore({
initialState,
reducers,
middleware: [
middleware.logger<State>(),
middleware.async<State>()
],
devTools: true,
enableTimeTravel: true
});
}