redux-providers
Version:
Minimalist dependency injection system for redux. Create providers to be injected and used in redux reducers.
31 lines • 1.58 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const provider_resolver_1 = require("../resolver/provider-resolver");
const instance_container_1 = require("../container/instance-container");
const metadata_keys_1 = require("../constants/metadata.keys");
const reducer_resolver_1 = require("../resolver/reducer-resolver");
function createReduxProperties(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) {
container.add(provider.name, provider_resolver_1.ProviderResolver.resolve(provider, moduleTarget.name));
}
const reducerList = moduleOptions.reducers || [];
for (let reducer of reducerList) {
}
const rootReducer = moduleOptions.rootReducer;
const rootReducerInstance = reducer_resolver_1.ReducerResolver.resolve(rootReducer, moduleTarget.name);
return {
instanceContainer: container,
rootReducer: rootReducerInstance.getReducer()
};
}
exports.createReduxProperties = createReduxProperties;
//# sourceMappingURL=create-container.js.map