@tacky/store
Version:
State management framework based on react
35 lines (29 loc) • 1.11 kB
JavaScript
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);
}