store tree changes managment
npm install @cuser/storeStore dedicated to manage the tree changes of cuser state
In order to prevent bad insertions in dag tree, is necessary implement a stricted validations, delegates to do jsonschema the validations in combination with reducers
* GraphType
* TYPE\_ACTION\_DEFAULT
* TYPE\_ACTION\_DELETE\_MESSAGE
* TYPE\_ACTION\_PUBLISH\_MESSAGE
* TYPE\_ACTION\_REHYDRATE
* TYPE\_ACTION\_SEAL
* TYPE\_ACTION\_UPDATE\_MESSAGE
* TYPE\_ERROR\_INVALID\_ACTION
* TYPE\_ERROR\_INVALID\_STATE
* TYPE\_ERROR\_MISSING\_PREVIOUS\_STATE
* TYPE\_ERROR\_MISSING\_RESOURCE\_ID
* TYPE\_ERROR\_USER\_MUST\_BE\_THE\_OWNER
* actions
* applyMiddleware
* assert
* compose
* contentReducer
* createIterator
* createReduxStore
* dataReducer
* debug
* format
* isAlias
* isPromise
* isReducer
* loggerMiddleware
* messageReducer
* minimatch
* monitorReducerEnhancer
* mutantJson
* mutateJson
* rootReducer
* tap
* topicReducer
* topicsReducer
* userReducer
* validator
* configureStore
* createReducer
* createRehydrateReducer
* createResolveReducer
* createSealReducer
* createSerializeEnhancer
* createSerializeReducer
* createStore
* parseAliasReducer
* parseMapping
* recursiveReducer
* wrapReducerAction
* wrapValidatorStateReducer
* phases
• GraphType: GraphType
Defined in store/reducers/content.js:9
Defined in store/reducers/message.js:10
Defined in store/reducers/topic.js:8
Defined in store/reducers/user.js:6
___
• TYPE\_ACTION\_DEFAULT: string
Defined in store/reducers/topics.js:14
___
• TYPE\_ACTION\_DELETE\_MESSAGE: string
Defined in store/reducers/message.js:14
Defined in store/reducers/topic.js:12
Defined in store/reducers/topics.js:13
___
• TYPE\_ACTION\_PUBLISH\_MESSAGE: string
Defined in store/reducers/content.js:10
Defined in store/reducers/data.js:5
Defined in store/reducers/message.js:12
Defined in store/reducers/topic.js:10
Defined in store/reducers/topics.js:11
Defined in store/reducers/user.js:8
___
• TYPE\_ACTION\_REHYDRATE: string
Defined in store/enhancers/createSerializeEnhancer.js:11
___
• TYPE\_ACTION\_SEAL: string
Defined in store/enhancers/createSerializeEnhancer.js:12
___
• TYPE\_ACTION\_UPDATE\_MESSAGE: string
Defined in store/reducers/content.js:10
Defined in store/reducers/data.js:5
Defined in store/reducers/message.js:13
Defined in store/reducers/topic.js:11
Defined in store/reducers/topics.js:12
___
• TYPE\_ERROR\_INVALID\_ACTION: \"Invalid action format for "%s"\"
Defined in store/utils/wrapValidatorActionReducer.js:8
___
• TYPE\_ERROR\_INVALID\_STATE: \"Invalid state format for "%s"\"
Defined in store/utils/wrapValidatorStateReducer.js:8
___
• TYPE\_ERROR\_MISSING\_PREVIOUS\_STATE: \"Previous state does't exists\"
Defined in store/reducers/content.js:11
___
• TYPE\_ERROR\_MISSING\_RESOURCE\_ID: \"%s with id "%s" doesn't exists\"
Defined in store/reducers/message.js:18
Defined in store/reducers/topics.js:17
___
• TYPE\_ERROR\_USER\_MUST\_BE\_THE\_OWNER: \"User must be the owner of the %s\"
Defined in store/reducers/message.js:17
___
• Const actions: "/Users/rubeniskov/Workspace/cuser/packages/store/types/actions" = require('../types/actions')
Defined in store/utils/createReducer.js:4
___
• applyMiddleware: applyMiddleware
Defined in store/createStore.js:9
___
• Const assert: assert = require('@cuser/utils/assert')
Defined in store/reducers/content.js:7
Defined in store/reducers/message.js:8
Defined in store/reducers/topics.js:8
___
• compose: compose
Defined in store/createStore.js:9
___
• Const contentReducer: Reducer = createReducer({ [TYPE\_ACTION\_PUBLISH\_MESSAGE]: () =\> ({ type: GraphType.GRAPH\_CONTENT, parent: null, revision: '@revision', cdate: '@timestamp', data: '@data', }), [TYPE\_ACTION\_UPDATE\_MESSAGE]: (state) =\> { assert(state, TYPE\_ERROR\_MISSING\_PREVIOUS\_STATE); return { ...state, parent: state, revision: '@revision', cdate: '@timestamp', data: '@data', } }})
Defined in store/reducers/content.js:23
Content reducer for manage message data and its historical revisions,
when update action, the current state will be swaped to parent in order
to keep the tree changes
param
param
___
• createIterator: any
Defined in store/enhancers/createSerializeReducer.js:9
___
• createReduxStore: StoreCreator
Defined in store/createStore.js:9
___
• Const dataReducer: Reducer = createReducer({ [TYPE\_ACTION\_PUBLISH\_MESSAGE]: (\_, { payload: { content: { data } } }) =\> data, [TYPE\_ACTION\_UPDATE\_MESSAGE]: (state, { payload: { content: { data } } }) =\> data})
Defined in store/reducers/data.js:15
Data string state
param
param
___
• Const debug: Debugger = require('debug')('cuser:store:serializer')
Defined in store/enhancers/createSerializeEnhancer.js:9
___
• format: format
Defined in store/utils/wrapValidatorActionReducer.js:6
Defined in store/utils/wrapValidatorStateReducer.js:6
___
• Const isAlias: isAlias = require('./isAlias')
Defined in store/utils/createResolveReducer.js:8
___
• Const isPromise: isPromise = require('@cuser/utils/isPromise')
Defined in store/reducers/recursive.js:7
___
• Const isReducer: isReducer = require('./isReducer')
Defined in store/utils/createResolveReducer.js:9
___
• Const loggerMiddleware: loggerMiddleware = require('./middlewares/loggerMiddleware')
Defined in store/createStore.js:11
___
• Const messageReducer: Reducer = createReducer({ [TYPE\_ACTION\_PUBLISH\_MESSAGE]: (state) =\> ({ type: GraphType.GRAPH\_MESSAGE, parent: state \|\| null, id: '@uuid', user: '@user', content: '@content', cdate: '@timestamp', mdate: '@timestamp', }), [TYPE\_ACTION\_UPDATE\_MESSAGE]: recursiveReducer((state, { payload }) =\> { const { messageId } = payload; if (state && state.id === messageId) { assert(payload.user.peerId === state.user.peerId, TYPE\_ERROR\_USER\_MUST\_BE\_THE\_OWNER, 'message') return { ...state, content: '@content', mdate: '@timestamp', } } else { assert(state.parent, TYPE\_ERROR\_MISSING\_RESOURCE\_ID, 'Message', messageId) } }), [TYPE\_ACTION\_DELETE\_MESSAGE]: recursiveReducer((state, { payload }) =\> { const { messageId } = payload; if (state && state.id === messageId) { assert(payload.user.peerId === state.user.peerId, TYPE\_ERROR\_USER\_MUST\_BE\_THE\_OWNER, 'message') return state.parent } else { assert(state.parent, TYPE\_ERROR\_MISSING\_RESOURCE\_ID, 'Message', messageId) } })})
Defined in store/reducers/message.js:31
Message reducer
param
param
___
• Const minimatch: M = require('minimatch')
Defined in store/enhancers/createSerializeReducer.js:8
___
• Const monitorReducerEnhancer: monitorReducerEnhancer = require('./enhancers/monitorReducerEnhancer')
Defined in store/createStore.js:10
___
• Const mutantJson: any = require('mutant-json')
Defined in store/utils/createResolveReducer.js:6
___
• Const mutateJson: any = require('mutant-json')
Defined in store/enhancers/createSerializeReducer.js:6
Defined in store/reducers/recursive.js:6
___
• Const rootReducer: (state: any, action: AnyAction) => any = require('./reducers')
Defined in store/configureStore.js:10
___
• Const tap: any = require('mutant-json/tap')
Defined in store/enhancers/createSerializeReducer.js:7
Defined in store/utils/createResolveReducer.js:7
___
• Const topicReducer: Reducer = createReducer({ [TYPE\_ACTION\_PUBLISH\_MESSAGE]: ({ count = 0 } = {}) =\> ({ type: GraphType.GRAPH\_TOPIC, message: '@message', count: count + 1 }), [TYPE\_ACTION\_UPDATE\_MESSAGE]: (state) =\> ({ ...state, message: '@message', }), [TYPE\_ACTION\_DELETE\_MESSAGE]: (state) =\> ({ ...state, message: '@message', count: state.count - 1 })})
Defined in store/reducers/topic.js:23
Topic reducer
param
param
___
• Const topicsReducer: Reducer = createReducer({ [TYPE\_ACTION\_PUBLISH\_MESSAGE]: (state, { payload: { topicId } }) =\> ({ ...state, [topicId]: '@topic' }), [TYPE\_ACTION\_UPDATE\_MESSAGE]: (state, { payload: { topicId } }) =\> { assert(state && state[topicId], TYPE\_ERROR\_MISSING\_RESOURCE\_ID, 'Topic', topicId); return { ...state, [topicId]: '@topic' } }, [TYPE\_ACTION\_DELETE\_MESSAGE]: (state, { payload: { topicId } }) =\> { assert(state && state[topicId], TYPE\_ERROR\_MISSING\_RESOURCE\_ID, 'Topic', topicId); return { ...state, [topicId]: '@topic' } }})
Defined in store/reducers/topics.js:28
Topic reducer
param
param
___
• Const userReducer: Reducer = createReducer({ // @ts-ignore [TYPE\_ACTION\_PUBLISH\_MESSAGE]: (\_, { payload: { user: { avatar, username, peerId } } = {} }) =\> ({ type: GraphType.GRAPH\_USER, username, peerId, avatar })})
Defined in store/reducers/user.js:18
User reducer
param
param
___
• Const validator: createValidator = require('@cuser/validator')
Defined in store/utils/wrapValidatorActionReducer.js:5
Defined in store/utils/wrapValidatorStateReducer.js:5
▸ ConstconfigureStore(preloadedState: string \| {} \| Promiseopts: CuserSerializeEnhancerOptions): CuserStore
Defined in store/configureStore.js:21
#### Parameters:
Name | Type |
------ | ------ |preloadedState | string \| {} \| Promiseopts | CuserSerializeEnhancerOptions |
Returns: CuserStore
___
▸ ConstcreateReducer(mutations: Record
Defined in store/utils/createReducer.js:12
#### Parameters:
Name | Type |
------ | ------ |mutations | Record
Returns: Reducer
___
▸ ConstcreateRehydrateReducer(__namedParameters: { deserialize: (state: string) => Promise
Defined in store/enhancers/createSerializeEnhancer.js:77
#### Parameters:
Name | Type |
------ | ------ |__namedParameters | { deserialize: (state: string) => Promise
Returns: rehydrateReducer
___
▸ ConstcreateResolveReducer(rootReducer: Reduceropts: any): resolveReducer
Defined in store/utils/createResolveReducer.js:24
#### Parameters:
Name | Type |
------ | ------ |rootReducer | Reduceropts | any |
Returns: resolveReducer
___
▸ ConstcreateSealReducer(__namedParameters: { serialize: (state: any) => Promise
Defined in store/enhancers/createSerializeEnhancer.js:94
#### Parameters:
Name | Type |
------ | ------ |__namedParameters | { serialize: (state: any) => Promise
Returns: sealReducer
___
▸ ConstcreateSerializeEnhancer(patterns: string[], opts: CuserSerializeEnhancerOptions): (Anonymous function)
Defined in store/enhancers/createSerializeEnhancer.js:112
#### Parameters:
Name | Type | Description |
------ | ------ | ------ |patterns | string[] | |opts | CuserSerializeEnhancerOptions | |
Returns: (Anonymous function)
___
▸ ConstcreateSerializeReducer(reducer: Reducerpatterns: string[], opts: CuserStoreSerializeReducerOptions): serializeReducer
Defined in store/enhancers/createSerializeReducer.js:24
#### Parameters:
Name | Type |
------ | ------ |reducer | Reducerpatterns | string[] |opts | CuserStoreSerializeReducerOptions |
Returns: serializeReducer
___
▸ ConstcreateStore(rootReducer: ReducerpreloadedState: any, enhancer: Function): CuserStore
Defined in store/createStore.js:32
#### Parameters:
Name | Type |
------ | ------ |rootReducer | ReducerpreloadedState | any |enhancer | Function |
Returns: CuserStore
___
▸ ConstparseAliasReducer(reducer: any): any[]
Defined in store/utils/createResolveReducer.js:11
#### Parameters:
Name | Type |
------ | ------ |reducer | any |
Returns: any[]
___
▸ ConstparseMapping(mapping: string \| any[]): any[]
Defined in store/utils/parseMapping.js:7
#### Parameters:
Name | Type |
------ | ------ |mapping | string \| any[] |
Returns: any[]
___
▸ ConstrecursiveReducer(reducer: Reduceropts: any): (Anonymous function)
Defined in store/reducers/recursive.js:14
Creates a recursive reducer for a certain key by, default parent
#### Parameters:
Name | Type | Description |
------ | ------ | ------ |reducer | Reduceropts | any | |
Returns: (Anonymous function)
___
▸ ConstwrapReducerAction(schema: any, reducer?: Reducer
Defined in store/utils/wrapValidatorActionReducer.js:16
Creates a state validator reducer
#### Parameters:
Name | Type | Default value | Description |
------ | ------ | ------ | ------ |schema | any | - | |reducer | Reducer
Returns: actionValidateReducer
___
▸ ConstwrapValidatorStateReducer(schema: any, reducer?: Reducer
Defined in store/utils/wrapValidatorStateReducer.js:16
Creates a state validator reducer
#### Parameters:
Name | Type | Default value | Description |
------ | ------ | ------ | ------ |schema | any | - | |reducer | Reducer
Returns: stateValidateReducer
▪ Const phases: object
Defined in store/enhancers/createSerializeEnhancer.js:16
#### Properties:
Name | Type | Value |
------ | ------ | ------ |IDLE | number | 0 |REHYDRATING | number | 2 |SEALING | number | 1 |