UNPKG

@tacky/store

Version:

State management framework based on react

35 lines (29 loc) 1.11 kB
import { applyMiddleware, use } from '../core/use'; import { createStore } from '../core/store'; import effectMiddleware from '../middlewares/effect'; import loggerMiddleware from '../middlewares/logger'; import { ctx } from '../const/config'; import { compose } from '../utils/compose'; import { invariant } from '../utils/error'; import { isSupportProxy, isSupportSymbol } from '../utils/lang'; export var isRunning = false; /** * Includes init built-in middleware, create store, load domain tree and so on. */ export function init() { invariant(isSupportProxy() && isSupportSymbol(), 'Proxy or Symbol is not supported, please add polyfill.'); invariant(!isRunning, 'Cannot init store multiple times.'); isRunning = true; if (ctx.middleware.effect) { use(effectMiddleware); } if (ctx.middleware.logger) { use(loggerMiddleware); } var enhancers = [applyMiddleware()]; var composeEnhancers = compose; if (process.env.NODE_ENV !== 'production') {// Tacky dev tools extension support. } var enhancer = composeEnhancers.apply(void 0, enhancers); createStore(enhancer); }