@dura/actions
Advanced tools
+32
| import { ModelMap, ReducerMap, EffectMap, AnyAction } from "@dura/core"; | ||
| export type ExtractReducerActions<R extends ReducerMap> = { | ||
| [key in keyof R]: Parameters<R[key]>[1] extends undefined | ||
| ? () => AnyAction | ||
| : Parameters<R[key]>[2] extends undefined | ||
| ? (payload: Parameters<R[key]>[1]) => AnyAction | ||
| : ( | ||
| payload: Parameters<R[key]>[1], | ||
| meta: Parameters<R[key]>[2] | ||
| ) => AnyAction; | ||
| }; | ||
| export type ExtractEffectActions<E extends EffectMap> = { | ||
| [key in keyof E]: Parameters<E[key]>[0] extends undefined | ||
| ? () => AnyAction | ||
| : Parameters<E[key]>[1] extends undefined | ||
| ? (payload: Parameters<E[key]>[0]) => AnyAction | ||
| : ( | ||
| payload: Parameters<E[key]>[0], | ||
| meta: Parameters<E[key]>[1] | ||
| ) => AnyAction; | ||
| }; | ||
| export type ExtractActions<M extends ModelMap> = { | ||
| [key in keyof M]: ExtractReducerActions<ReturnType<M[key]["reducers"]>> & | ||
| ExtractEffectActions<ReturnType<M[key]["effects"]>>; | ||
| }; | ||
| export type ActionCreator = <M extends ModelMap>(m: M) => ExtractActions<M>; | ||
| export const createActions: ActionCreator; |
+19
-17
@@ -1,3 +0,4 @@ | ||
| import createAction from '../src/index'; | ||
| import { createActions } from "../src"; | ||
| import { ActionCreator } from "../index"; | ||
| const ca = createActions as ActionCreator; | ||
| const initialState = () => ({ | ||
@@ -7,15 +8,15 @@ /** | ||
| */ | ||
| name: '默认姓名' as string, | ||
| name: "默认姓名" as string, | ||
| /** | ||
| * 性别 | ||
| */ | ||
| sex: undefined as '男' | '女', | ||
| sex: undefined as "男" | "女", | ||
| /** | ||
| * 年龄 | ||
| */ | ||
| age: undefined as number | ||
| age: undefined as number, | ||
| }); | ||
| const UserModel = { | ||
| name: () => <const>'user', | ||
| name: () => <const>"user", | ||
| state: () => initialState(), | ||
@@ -28,6 +29,6 @@ reducers: () => ({ | ||
| onChangeName(state, payload: { newS: string }) { | ||
| console.log('hello'); | ||
| console.log("hello"); | ||
| state.name = payload.newS; | ||
| return state; | ||
| } | ||
| }, | ||
| }), | ||
@@ -38,17 +39,18 @@ effects: () => ({ | ||
| meta: { loading: boolean } | ||
| ) {} | ||
| }) | ||
| ) {}, | ||
| }), | ||
| }; | ||
| describe('action-describe', function() { | ||
| it('test-action', function() { | ||
| const actionCreator = createAction({ UserModel }); | ||
| const action = actionCreator.UserModel.onChangeName({ newS: 'test' }); | ||
| describe("action-describe", function () { | ||
| it("test-action", function () { | ||
| const actionCreator = ca({ UserModel }); | ||
| const action = actionCreator.UserModel.onChangeName({ newS: "test" }); | ||
| expect(action).toEqual({ | ||
| type: 'UserModel/onChangeName', | ||
| type: "UserModel/onChangeName", | ||
| payload: { | ||
| newS: 'test' | ||
| } | ||
| newS: "test", | ||
| }, | ||
| }); | ||
| }); | ||
| }); |
+10
-2
@@ -1,2 +0,10 @@ | ||
| import { ModelMap, ExtractActions } from "@dura/types"; | ||
| export default function <RM extends ModelMap>(models: RM): ExtractActions<RM>; | ||
| declare function createActions(models: any): { | ||
| [x: number]: { | ||
| [x: string]: (payload: any, meta: any) => { | ||
| type: string; | ||
| payload: any; | ||
| meta: any; | ||
| }; | ||
| }; | ||
| }; | ||
| export { createActions }; |
+12
-20
| "use strict"; | ||
| var __assign = (this && this.__assign) || function () { | ||
| __assign = Object.assign || function(t) { | ||
| for (var s, i = 1, n = arguments.length; i < n; i++) { | ||
| s = arguments[i]; | ||
| for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) | ||
| t[p] = s[p]; | ||
| } | ||
| return t; | ||
| }; | ||
| return __assign.apply(this, arguments); | ||
| }; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| var merge = function (prev, next) { return (__assign(__assign({}, prev), next)); }; | ||
| function default_1(models) { | ||
| return Object.keys(models) | ||
| .map(function (name) { return extractAction(name, models[name]); }) | ||
| .reduce(merge, {}); | ||
| var utils_1 = require("@dura/utils"); | ||
| function createActions(models) { | ||
| return Object.entries(models) | ||
| .map(function (_a) { | ||
| var k = _a[0], m = _a[1]; | ||
| return extractAction(k, m); | ||
| }) | ||
| .reduce(utils_1.merge, utils_1.noop()); | ||
| } | ||
| exports.default = default_1; | ||
| exports.createActions = createActions; | ||
| function extractAction(name, model) { | ||
@@ -25,3 +17,3 @@ var _a; | ||
| return _a = {}, | ||
| _a[name] = Object.keys(merge(reducers(), effects())) | ||
| _a[name] = Object.keys(utils_1.merge(reducers(), effects())) | ||
| .map(function (reducerKey) { | ||
@@ -33,9 +25,9 @@ var _a; | ||
| payload: payload, | ||
| meta: meta | ||
| meta: meta, | ||
| }); }, | ||
| _a); | ||
| }) | ||
| .reduce(merge, {}), | ||
| .reduce(utils_1.merge, {}), | ||
| _a; | ||
| } | ||
| //# sourceMappingURL=index.js.map |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAEA,IAAM,KAAK,GAAG,UAAC,IAAI,EAAE,IAAI,IAAK,OAAA,uBAAM,IAAI,GAAK,IAAI,EAAG,EAAtB,CAAsB,CAAC;AAErD,mBAA6C,MAAU;IACrD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;SACvB,GAAG,CAAC,UAAC,IAAY,IAAK,OAAA,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAjC,CAAiC,CAAC;SACxD,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACvB,CAAC;AAJD,4BAIC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,KAAiB;;IAC5C,IAAA,yBAAQ,EAAE,uBAAO,CAAW;IACpC;QACE,GAAC,IAAI,IAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;aAC9C,GAAG,CAAC,UAAC,UAAkB;;YAAK,OAAA;gBAC3B,GAAC,UAAU,IAAG,UAAC,OAAO,EAAE,IAAI,IAAK,OAAA,CAAC;oBAChC,IAAI,EAAK,IAAI,SAAI,UAAY;oBAC7B,OAAO,SAAA;oBACP,IAAI,MAAA;iBACL,CAAC,EAJ+B,CAI/B;mBACF;QAN2B,CAM3B,CAAC;aACF,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;WACpB;AACJ,CAAC"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,qCAA0C;AAE1C,SAAS,aAAa,CAAC,MAAM;IAC3B,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SAC1B,GAAG,CAAC,UAAC,EAAM;YAAL,SAAC,EAAE,SAAC;QAAM,OAAA,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IAAnB,CAAmB,CAAC;SACpC,MAAM,CAAC,aAAK,EAAE,YAAI,EAAE,CAAC,CAAC;AAC3B,CAAC;AAiBQ,sCAAa;AAftB,SAAS,aAAa,CAAC,IAAI,EAAE,KAAK;;IACxB,IAAA,yBAAQ,EAAE,uBAAO,CAAW;IACpC;QACE,GAAC,IAAI,IAAG,MAAM,CAAC,IAAI,CAAC,aAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;aAC9C,GAAG,CAAC,UAAC,UAAkB;;YAAK,OAAA;gBAC3B,GAAC,UAAU,IAAG,UAAC,OAAO,EAAE,IAAI,IAAK,OAAA,CAAC;oBAChC,IAAI,EAAK,IAAI,SAAI,UAAY;oBAC7B,OAAO,SAAA;oBACP,IAAI,MAAA;iBACL,CAAC,EAJ+B,CAI/B;mBACF;QAN2B,CAM3B,CAAC;aACF,MAAM,CAAC,aAAK,EAAE,EAAE,CAAC;WACpB;AACJ,CAAC"} |
+5
-4
| { | ||
| "name": "@dura/actions", | ||
| "version": "3.3.3", | ||
| "version": "3.4.0", | ||
| "description": "", | ||
| "main": "./lib/index.js", | ||
| "typings": "./index.d.ts", | ||
| "publishConfig": { | ||
@@ -15,6 +16,6 @@ "access": "public" | ||
| "dependencies": { | ||
| "@dura/core": "^3.3.3", | ||
| "@dura/types": "^3.3.3" | ||
| "@dura/core": "^3.4.0", | ||
| "@dura/utils": "^3.4.0" | ||
| }, | ||
| "gitHead": "1892de3a887274897331569228660269193deb19" | ||
| "gitHead": "1486b75efc3ca3cad46d9480e04589765ee54eb2" | ||
| } |
+11
-11
@@ -1,12 +0,10 @@ | ||
| import { ModelMap, Model, ExtractActions } from "@dura/types"; | ||
| import { merge, noop } from "@dura/utils"; | ||
| const merge = (prev, next) => ({ ...prev, ...next }); | ||
| export default function<RM extends ModelMap>(models: RM): ExtractActions<RM> { | ||
| return Object.keys(models) | ||
| .map((name: string) => extractAction(name, models[name])) | ||
| .reduce(merge, {}); | ||
| function createActions(models) { | ||
| return Object.entries(models) | ||
| .map(([k, m]) => extractAction(k, m)) | ||
| .reduce(merge, noop()); | ||
| } | ||
| function extractAction(name: string, model: Model<any>) { | ||
| function extractAction(name, model) { | ||
| const { reducers, effects } = model; | ||
@@ -19,7 +17,9 @@ return { | ||
| payload, | ||
| meta | ||
| }) | ||
| meta, | ||
| }), | ||
| })) | ||
| .reduce(merge, {}) | ||
| .reduce(merge, {}), | ||
| }; | ||
| } | ||
| export { createActions }; |
46810
1.64%21
5%586
5.21%+ Added
- Removed
- Removed
- Removed
Updated