diff --git a/types/redux-injectable-store/index.d.ts b/types/redux-injectable-store/index.d.ts new file mode 100644 index 0000000000..14c5ac3062 --- /dev/null +++ b/types/redux-injectable-store/index.d.ts @@ -0,0 +1,28 @@ +// Type definitions for redux-injectable-store 1.0 +// Project: https://github.com/lelandrichardson/redux-injectable-store#readme +// Definitions by: Daniel Perez Alvarez +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +import { Reducer, Store, StoreEnhancer } from "redux"; + +export interface InjectableStore extends Store { + inject(namespace: string, reducer: Reducer): void; + injectAll(reducers: { [key: string]: Reducer }): void; + clearReducers(): void; +} + +export type WrapReducer = (reducer: Reducer) => Reducer; + +export interface InjectableStoreCreator { + ( + enhancer?: StoreEnhancer, + wrapReducer?: WrapReducer + ): InjectableStore; + ( + preloadedState: S, + enhancer?: StoreEnhancer, + wrapReducer?: WrapReducer + ): InjectableStore; +} + +export const createInjectableStore: InjectableStoreCreator; diff --git a/types/redux-injectable-store/package.json b/types/redux-injectable-store/package.json new file mode 100644 index 0000000000..6d68bf2f9b --- /dev/null +++ b/types/redux-injectable-store/package.json @@ -0,0 +1,6 @@ +{ + "private": true, + "dependencies": { + "redux": "^3.6.0" + } +} diff --git a/types/redux-injectable-store/redux-injectable-store-tests.ts b/types/redux-injectable-store/redux-injectable-store-tests.ts new file mode 100644 index 0000000000..35e01684f1 --- /dev/null +++ b/types/redux-injectable-store/redux-injectable-store-tests.ts @@ -0,0 +1,24 @@ +import { createInjectableStore } from "redux-injectable-store"; +import { applyMiddleware, compose, AnyAction, Middleware } from "redux"; + +interface State { + foo: string; + bar?: string; + baz?: string; +} + +const initialState: State = { foo: "bar" }; + +const middleware: Middleware[] = []; +const enhancer = applyMiddleware(...middleware); +const store = createInjectableStore(initialState, enhancer); +const anotherStore = createInjectableStore(initialState, enhancer, reducer => reducer); + +const dummyReducer = (state: string) => state; + +store.inject("foo", dummyReducer); + +anotherStore.injectAll({ + bar: dummyReducer, + baz: dummyReducer +}); diff --git a/types/redux-injectable-store/tsconfig.json b/types/redux-injectable-store/tsconfig.json new file mode 100644 index 0000000000..1fcc143ead --- /dev/null +++ b/types/redux-injectable-store/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ + "es6" + ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": true, + "strictFunctionTypes": true, + "baseUrl": "../", + "typeRoots": [ + "../" + ], + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + }, + "files": [ + "index.d.ts", + "redux-injectable-store-tests.ts" + ] +} diff --git a/types/redux-injectable-store/tslint.json b/types/redux-injectable-store/tslint.json new file mode 100644 index 0000000000..3db14f85ea --- /dev/null +++ b/types/redux-injectable-store/tslint.json @@ -0,0 +1 @@ +{ "extends": "dtslint/dt.json" }