- Notifications
You must be signed in to change notification settings - Fork0
rstuven/fsa-creator
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Flux Standard Action creation with schema validation.
npminstall--savefsa-creator
This module started as a fork ofredux-actions by Andrew Clark.It focuses in the creation of actions with handy specifications of mapping functions and schema validation.
payloadSpec
andmetaSpec
aremapping function specifications forpayload
andmeta
properties, respectively.
Returns an action creator function with following signature:
payloadInput
andmetaInput
are the input of the respective mapping function.
A mapping function specification can be:
The property (payload
ormeta
) will be omitted.
A mapping function will be used.
Example:
letactionCreator=createAction('ACTION',arg=>'(u'+arg+'u)');expect(actionCreator('.')).to.deep.equal({type:'ACTION',payload:'(u.u)'});
The identity function will be used.
Example:
letincrement=createAction('INCREMENT',true);// same asincrement=createAction('INCREMENT',amount=>amount);expect(increment(42)).to.deep.equal({type:'INCREMENT',payload:42});
A validated identity function will be used.JSONSchema v4 validation powered byis-my-json-valid.
Example:
letactionCreator=createAction('ACTION',{required:true,type:'object',properties:{hello:{required:true,type:'string',description:'A greeting'}}});expect(actionCreator()).to.deep.equal({type:'ACTION',error:true,payload:newError('payload is required')});expect(actionCreator({})).to.deep.equal({type:'ACTION',error:true,payload:newError('payload.hello is required')});expect(actionCreator({hello:123})).to.deep.equal({type:'ACTION',error:true,payload:newError('payload.hello is the wrong type')});expect(actionCreator({hello:'world'})).to.deep.equal({type:'ACTION',payload:{hello:'world'}});
A property extraction function will be used. This is thought to be used as a fast way of document expected properties, without defining a schema (yet).
Example:
letactionCreator=createAction('ACTION',['prop1','prop3']);expect(actionCreator({prop1:1,prop2:2,prop3:3})).to.deep.equal({type:'ACTION',payload:{prop1:1,prop3:3}});
NOTE: The more correct name forcreateAction
function probably iscreateActionCreator()
, but that seems a bit redundant.
About
Flux Standard Action creation with schema validation.