tyding up
This commit is contained in:
parent
6168720c47
commit
1983e2ec07
@ -1,11 +1,13 @@
|
|||||||
{
|
{
|
||||||
"name": "updux",
|
"name": "updux",
|
||||||
|
"types": "dist",
|
||||||
"version": "0.0.1",
|
"version": "0.0.1",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/jest": "^24.0.19",
|
"@types/jest": "^24.0.19",
|
||||||
"@types/lodash": "^4.14.144",
|
"@types/lodash": "^4.14.144",
|
||||||
|
"dtslint": "^0.9.8",
|
||||||
"lodash": "^4.17.15",
|
"lodash": "^4.17.15",
|
||||||
"redux": "^4.0.4",
|
"redux": "^4.0.4",
|
||||||
"ts-jest": "^24.1.0",
|
"ts-jest": "^24.1.0",
|
||||||
@ -19,5 +21,8 @@
|
|||||||
"babel-jest": "^24.9.0",
|
"babel-jest": "^24.9.0",
|
||||||
"jest": "^24.9.0",
|
"jest": "^24.9.0",
|
||||||
"updeep": "^1.2.0"
|
"updeep": "^1.2.0"
|
||||||
|
},
|
||||||
|
"tsd": {
|
||||||
|
"directory": "test-d"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,30 +1,21 @@
|
|||||||
import fp from 'lodash/fp';
|
import fp from 'lodash/fp';
|
||||||
|
import { ActionEffects, ActionCreator, ActionCreators, ActionMutations } from '../types';
|
||||||
|
|
||||||
function actionFor(type) {
|
function actionFor(type: string) {
|
||||||
return (payload = null, meta = null) => {
|
return ( (payload = undefined, meta = undefined) =>
|
||||||
return fp.pickBy(v => v !== null)({type, payload, meta});
|
fp.pickBy(v => v !== null)({type, payload, meta})
|
||||||
};
|
) as ActionCreator;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function buildActions(
|
export default function buildActions(
|
||||||
mutations = {},
|
mutations : ActionMutations = {},
|
||||||
effects = {},
|
effects : ActionEffects = {},
|
||||||
subActions = {},
|
subActions : ActionCreators = {},
|
||||||
) {
|
) {
|
||||||
|
|
||||||
let actions = { ...subActions };
|
return { ...subActions,
|
||||||
|
...fp.fromPairs([ ...Object.keys(mutations), ...Object.keys(effects) ]
|
||||||
|
.map( type => [ type, actionFor(type) ]))
|
||||||
|
};
|
||||||
|
|
||||||
Object.keys(mutations).forEach(type => {
|
|
||||||
if (!actions[type]) {
|
|
||||||
actions[type] = actionFor(type);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
Object.keys(effects).forEach(type => {
|
|
||||||
if (!actions[type]) {
|
|
||||||
actions[type] = actionFor(type);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return actions;
|
|
||||||
}
|
}
|
||||||
|
6
src/buildInitial/index.test-d.ts
Normal file
6
src/buildInitial/index.test-d.ts
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
// TypeScript Version: 3.4
|
||||||
|
|
||||||
|
import buildInitial from '.';
|
||||||
|
|
||||||
|
// $ExpectType any
|
||||||
|
const x = buildInitial();
|
28
src/index.ts
28
src/index.ts
@ -3,32 +3,6 @@ import u from 'updeep';
|
|||||||
|
|
||||||
import Updux from './updux';
|
import Updux from './updux';
|
||||||
|
|
||||||
|
export default function updux(config) {
|
||||||
|
|
||||||
|
|
||||||
function updux(config) {
|
|
||||||
return new Updux(config);
|
return new Updux(config);
|
||||||
// const actions = buildActions(
|
|
||||||
// config.mutations,
|
|
||||||
// config.effects,
|
|
||||||
// fp.flatten( ( config.subduxes||{}).map( ({ actions }) => actions ) )
|
|
||||||
// );
|
|
||||||
|
|
||||||
// const initial = buildInitial(config);
|
|
||||||
|
|
||||||
// const mutations = buildMutations(config.mutations,config.subduxes);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// return {
|
|
||||||
// reducer,
|
|
||||||
// upreducer,
|
|
||||||
// middleware,
|
|
||||||
// createStore,
|
|
||||||
// actions: ( actions as any ),
|
|
||||||
// mutations,
|
|
||||||
// initial,
|
|
||||||
// };
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default updux;
|
|
||||||
|
16
src/types.ts
16
src/types.ts
@ -5,3 +5,19 @@ export type Mutation = (payload: any, action: any) => (state:any) => any;
|
|||||||
|
|
||||||
export type Mutations = Dictionary<Mutation>;
|
export type Mutations = Dictionary<Mutation>;
|
||||||
|
|
||||||
|
export type ActionMutations = Dictionary<Mutation>;
|
||||||
|
|
||||||
|
export type Effect = (api:any) => (next: Function) => (action: any) => any;
|
||||||
|
|
||||||
|
export type ActionEffects = Dictionary<Effect>;
|
||||||
|
|
||||||
|
export type Action<T = string, P = any, M = any> = {
|
||||||
|
type: T,
|
||||||
|
payload: P,
|
||||||
|
meta: M,
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ActionCreator = <P,M>(payload?: P, meta?: M ) => Action<string,P,M>;
|
||||||
|
|
||||||
|
export type ActionCreators = Dictionary<ActionCreator>;
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ import buildActions from './buildActions';
|
|||||||
import buildInitial from './buildInitial';
|
import buildInitial from './buildInitial';
|
||||||
import buildMutations from './buildMutations';
|
import buildMutations from './buildMutations';
|
||||||
|
|
||||||
import { Dictionary, Mutation } from './types';
|
import { Dictionary, Mutation, ActionCreators } from './types';
|
||||||
import buildCreateStore from './buildCreateStore';
|
import buildCreateStore from './buildCreateStore';
|
||||||
import buildMiddleware from './buildMiddleware';
|
import buildMiddleware from './buildMiddleware';
|
||||||
import buildUpreducer from './buildUpreducer';
|
import buildUpreducer from './buildUpreducer';
|
||||||
@ -18,7 +18,7 @@ type UpduxConfig = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export class Updux {
|
export class Updux {
|
||||||
actions: any;
|
actions: ActionCreators;
|
||||||
|
|
||||||
subduxes: Dictionary<Updux>;
|
subduxes: Dictionary<Updux>;
|
||||||
|
|
||||||
|
@ -4,19 +4,19 @@
|
|||||||
"incremental": true, /* Enable incremental compilation */
|
"incremental": true, /* Enable incremental compilation */
|
||||||
"target": "ES2019", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */
|
"target": "ES2019", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */
|
||||||
"module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
|
"module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
|
||||||
"lib": [ "dom", "es2017" ], /* Specify library files to be included in the compilation. */
|
"lib": [ "dom", "es2019" ], /* Specify library files to be included in the compilation. */
|
||||||
// "allowJs": true, /* Allow javascript files to be compiled. */
|
// "allowJs": true, /* Allow javascript files to be compiled. */
|
||||||
// "checkJs": true, /* Report errors in .js files. */
|
// "checkJs": true, /* Report errors in .js files. */
|
||||||
// "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
|
// "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
|
||||||
// "declaration": true, /* Generates corresponding '.d.ts' file. */
|
"declaration": true, /* Generates corresponding '.d.ts' file. */
|
||||||
// "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
|
"declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
|
||||||
// "sourceMap": true, /* Generates corresponding '.map' file. */
|
"sourceMap": true, /* Generates corresponding '.map' file. */
|
||||||
// "outFile": "./", /* Concatenate and emit output to single file. */
|
// "outFile": "./", /* Concatenate and emit output to single file. */
|
||||||
"outDir": "./dist", /* Redirect output structure to the directory. */
|
"outDir": "./dist", /* Redirect output structure to the directory. */
|
||||||
// "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
|
"rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
|
||||||
// "composite": true, /* Enable project compilation */
|
// "composite": true, /* Enable project compilation */
|
||||||
// "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */
|
// "tsBuildInfoFile": "./", /* Specify file to store incremental compilation information */
|
||||||
// "removeComments": true, /* Do not emit comments to output. */
|
"removeComments": true, /* Do not emit comments to output. */
|
||||||
// "noEmit": true, /* Do not emit outputs. */
|
// "noEmit": true, /* Do not emit outputs. */
|
||||||
// "importHelpers": true, /* Import emit helpers from 'tslib'. */
|
// "importHelpers": true, /* Import emit helpers from 'tslib'. */
|
||||||
// "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
|
// "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
|
||||||
|
Loading…
Reference in New Issue
Block a user