{"library":"redux-validator","title":"Redux Action Validator Middleware","description":"redux-validator is a middleware for Redux that enables validation of action parameters before they reach the reducers. It works by inspecting the `meta.validator` field of a dispatched action, which defines validation functions and messages for properties within the `action.payload`. If any validation fails, the dispatch is aborted, and an error object containing the `err`, `msg`, `param`, and `id` of the failed validation is returned. The library is compatible with Flux Standard Actions (FSA). As of the provided information, the current version is 0.2.3, suggesting it may be an early-stage or unmaintained project with no active release cadence. Its primary differentiator is the direct integration of validation rules within the action's `meta` field, offering a localized approach to action-specific data integrity checks.","language":"javascript","status":"abandoned","last_verified":"Thu Apr 23","install":{"commands":["npm install redux-validator"],"cli":null},"imports":["import Validator from 'redux-validator';"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import { createStore, applyMiddleware } from 'redux';\nimport Validator from 'redux-validator';\n\n// A dummy reducer for the example\nconst reducer = (state = { todos: [] }, action) => {\n  switch (action.type) {\n    case 'ADD_TODO':\n      return { ...state, todos: [...state.todos, action.payload] };\n    default:\n      return state;\n  }\n};\n\n// Initialize the validator middleware\nconst validator = Validator();\n\n// Apply middleware, ensure validator is applied first for correctness\nconst createStoreWithMiddleware = applyMiddleware(validator)(createStore);\nconst store = createStoreWithMiddleware(reducer);\n\n// Example valid action\nconst validAction = {\n  type: 'ADD_TODO',\n  payload: {\n    text: 'Learn redux-validator',\n    complete: false\n  },\n  meta: {\n    validator: {\n      text: {\n        func: (text, state, payload) => typeof text === 'string' && text.length > 0,\n        msg: 'Todo text cannot be empty'\n      },\n      complete: {\n        func: (complete, state, payload) => typeof complete === 'boolean',\n        msg: 'Complete status must be a boolean'\n      }\n    }\n  }\n};\n\nconst result1 = store.dispatch(validAction);\nconsole.log('Dispatch result (valid):', result1);\nconsole.log('Current state (after valid):', store.getState());\n\n// Example invalid action\nconst invalidAction = {\n  type: 'ADD_TODO',\n  payload: {\n    text: '', // Invalid: empty string\n    complete: 'no' // Invalid: not a boolean\n  },\n  meta: {\n    validator: {\n      text: {\n        func: (text, state, payload) => typeof text === 'string' && text.length > 0,\n        msg: 'Todo text cannot be empty'\n      },\n      complete: {\n        func: (complete, state, payload) => typeof complete === 'boolean',\n        msg: 'Complete status must be a boolean'\n      }\n    }\n  }\n};\n\nconst result2 = store.dispatch(invalidAction);\nconsole.log('Dispatch result (invalid):', result2);\nconsole.log('Current state (after invalid - should be same as before):', store.getState());","lang":"javascript","description":"This quickstart demonstrates how to set up `redux-validator` middleware and define validation rules within an action's `meta` field. It shows both successful and aborted dispatches based on validation outcomes.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}