UNPKG

redux-providers

Version:

Minimalist dependency injection system for redux. Create providers to be injected and used in redux reducers.

42 lines 1.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const resolver_1 = require("../resolver/resolver"); const instance_container_1 = require("../container/instance-container"); const metadata_keys_1 = require("../constants/metadata.keys"); const redux_1 = require("redux"); function createReduxStore(moduleTarget) { if (!Reflect.hasMetadata(metadata_keys_1.METADATA_KEY.REDUX_PROVIDER_MODULE_OPTIONS, moduleTarget)) { throw new Error("Are you sure " + moduleTarget.name + " is a module?"); } const moduleOptions = Reflect.getMetadata(metadata_keys_1.METADATA_KEY.REDUX_PROVIDER_MODULE_OPTIONS, moduleTarget); if (!moduleOptions) { throw new Error("Module options of " + moduleTarget.name + "must be defined!"); } let container = new instance_container_1.InstanceContainer(); const providerList = moduleOptions.providers || []; for (let provider of providerList) { resolver_1.Resolver.resolve(provider, container, moduleTarget.name); } let actionTree = {}; for (let action in moduleOptions.actions) { if (moduleOptions.actions.hasOwnProperty(action)) { actionTree[action] = resolver_1.Resolver.resolve(moduleOptions.actions[action], container, moduleTarget.name); } } const actions = actionTree; const initialState = moduleOptions.initialState; let store; if (moduleOptions.middlewares && moduleOptions.middlewares.length > 0) { store = redux_1.createStore(moduleOptions.rootReducer, initialState, redux_1.applyMiddleware(...moduleOptions.middlewares)); } else { store = redux_1.createStore(moduleOptions.rootReducer, initialState); } return { container: container, reduxActions: actions, reduxStore: store, }; } exports.createReduxStore = createReduxStore; //# sourceMappingURL=create-store.js.map