in src/core/plugins/err/reducers.js [22:100]
export default function() {
return {
[NEW_THROWN_ERR]: (state, { payload }) => {
let error = Object.assign(DEFAULT_ERROR_STRUCTURE, payload, {type: "thrown"})
return state
.update("errors", errors => (errors || List()).push( fromJS( error )) )
.update("errors", errors => transformErrors(errors))
},
[NEW_THROWN_ERR_BATCH]: (state, { payload }) => {
payload = payload.map(err => {
return fromJS(Object.assign(DEFAULT_ERROR_STRUCTURE, err, { type: "thrown" }))
})
return state
.update("errors", errors => (errors || List()).concat( fromJS( payload )) )
.update("errors", errors => transformErrors(errors))
},
[NEW_SPEC_ERR]: (state, { payload }) => {
let error = fromJS(payload)
error = error.set("type", "spec")
return state
.update("errors", errors => (errors || List()).push( fromJS(error)).sortBy(err => err.get("line")) )
.update("errors", errors => transformErrors(errors))
},
[NEW_SPEC_ERR_BATCH]: (state, { payload }) => {
payload = payload.map(err => {
return fromJS(Object.assign(DEFAULT_ERROR_STRUCTURE, err, { type: "spec" }))
})
return state
.update("errors", errors => (errors || List()).concat(fromJS(payload)))
.update("errors", errors => transformErrors(errors))
},
[NEW_AUTH_ERR]: (state, { payload }) => {
let error = fromJS(Object.assign({}, payload))
error = error.set("type", "auth")
return state
.update("errors", errors => (errors || List()).push( fromJS(error)) )
.update("errors", errors => transformErrors(errors))
},
[CLEAR]: (state, { payload }) => {
if(!payload || !state.get("errors")) {
return state
}
let newErrors = state.get("errors")
.filter(err => {
return err.keySeq().every(k => {
const errValue = err.get(k)
const filterValue = payload[k]
if(!filterValue) return true
return errValue !== filterValue
})
})
return state.merge({
errors: newErrors
})
},
[CLEAR_BY]: (state, { payload }) => {
if(!payload || typeof payload !== "function") {
return state
}
let newErrors = state.get("errors")
.filter(err => {
return payload(err)
})
return state.merge({
errors: newErrors
})
}
}
}