@polystate/definition
v0.2.0
Published
Framework-agnostic store definitions for Polystate code generation
Downloads
125
Maintainers
Readme
@polystate/definition
Framework-agnostic store definitions for Polystate code generation.
This package provides TypeScript types and validators for defining stores that can be used to generate React Redux or Angular NgRx implementations.
Installation
npm install @polystate/definitionUsage
Define a Store
import { StoreDefinition } from '@polystate/definition';
export const todoDefinition: StoreDefinition = {
name: 'todo',
initialState: {
todos: [] as Array<{ id: number; title: string; done: boolean }>,
filter: 'all' as 'all' | 'active' | 'completed',
},
actions: {
addTodo: (state, title: string) => ({
...state,
todos: [...state.todos, { id: Date.now(), title, done: false }],
}),
toggleTodo: (state, id: number) => ({
...state,
todos: state.todos.map((t) => (t.id === id ? { ...t, done: !t.done } : t)),
}),
removeTodo: (state, id: number) => ({
...state,
todos: state.todos.filter((t) => t.id !== id),
}),
setFilter: (state, filter: string) => ({
...state,
filter,
}),
},
description: 'Todo store with filtering',
};Validate a Definition
import { validateStoreDefinition } from '@polystate/definition';
const result = validateStoreDefinition(todoDefinition);
if (result.valid) {
console.log('Definition is valid');
} else {
console.error('Errors:', result.errors);
console.warn('Warnings:', result.warnings);
}API
Types
StoreDefinition<T>- Complete store definitionActionHandler<TState, TPayload>- Action handler functionActionMap<TState>- Map of action handlersValidationResult- Result of validationGenerateOptions- Code generation optionsGenerationResult- Result of code generation
Functions
validateStoreDefinition(definition)- Validate a store definitionnormalizeStoreDefinition(definition)- Normalize a definitionextractActions(definition)- Extract action information
License
MIT
