async-xtate
v1.0.2
Published
A lightweight, type-safe library for managing async state
Maintainers
Readme
Async-Xtate
A lightweight, type-safe library for managing async state in TypeScript applications.
Features
- 🚀 Type-safe async state management
- 📦 Zero dependencies
- 🎯 Simple and intuitive API
- 🔄 Support for all async states (initial, loading, success, error, refetch)
- 🛠️ Built with TypeScript
Installation
npm install async-xtate
# or
yarn add async-xtate
# or
pnpm add async-xtate
# or
bun add async-xtateUsage
import {
makeAsyncSuccessState,
makeAsyncErrorState,
makeAsyncLoadingState,
makeRefetchState,
makeInitialState,
type AsyncState
} from 'async-xtate';
// Define your data and error types
type UserData = { name: string; email: string };
type UserError = string;
// Create different states
const successState = makeAsyncSuccessState<UserData>({
name: 'John Doe',
email: '[email protected]'
});
const errorState = makeAsyncErrorState<UserError, UserData>(
'Failed to fetch user',
{ name: 'John Doe', email: '[email protected]' }
);
const loadingState = makeAsyncLoadingState<UserData, UserError>();
const refetchState = makeRefetchState<UserData, UserError>(
{ name: 'John Doe', email: '[email protected]' }
);
const initialState = makeInitialState<UserData, UserError>();API Reference
State Types
AsyncSuccessState<Data>: Represents a successful async operationAsyncErrorState<Err, Data>: Represents a failed async operationAsyncLoadingState<Data, Err>: Represents a loading stateAsyncRefetchState<Data, Err>: Represents a refetching stateAsyncInitialState<Data, Err>: Represents the initial stateAsyncState<Data, Err>: Union type of all possible states
Helper Functions
makeAsyncSuccessState<Data>(data: Data): Creates a success statemakeAsyncErrorState<Err, Data>(error: Err, data?: Data): Creates an error statemakeAsyncLoadingState<Data, Err>(data?: Data, error?: Err): Creates a loading statemakeRefetchState<Data, Err>(data?: Data, error?: Err): Creates a refetch statemakeInitialState<Data, Err>(data?: Data, error?: Err): Creates an initial state
Type Safety
The library is fully type-safe, providing TypeScript with all the information it needs to ensure type correctness:
const state: AsyncState<UserData, UserError> = makeAsyncSuccessState({
name: 'John Doe',
email: '[email protected]'
});
// TypeScript knows the exact shape of the state
if (state.status === 'success') {
console.log(state.data.name); // ✅ TypeScript knows this is safe
}Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT © Roberto Ríos
