1.7.14 • Published 2 years ago
client-web-storage v1.7.14
Client Web Storage
Powerful Web Application Data Storage and State Management Solution.
- Same simple API for IndexedDB, LocalStorage, WebSQL, and in-memory data storage;
- Event driven and asynchronous;
- Automatic data validation done at the store level - Guarantees that all data fields are of the right type and exists with configurable automatic defaults;
- No actions or reducers setup needed - The easiest store to configure ever;
- Easy setup for Client-Server data synchronization using interceptors;
- NOT UI framework specific! Works with any UI Framework (React, Angular, VueJs, etc) - Take your storage setup with you when you migrate to a different framework and eliminate the need to learn a new state management solution for your app.
- Easy to maintain and perform all data logic and fetching away from your components - Keep data concerns away from UI side of your app;
- Highly and easily configurable;
- Easy to tap into any store events to perform side effect logic;
Quick Example
// todo.store.ts
import {ClientStore} from "client-web-storage";
interface ToDo {
name: string;
description: string;
complete: boolean;
}
// create a store providing the name and schema object
// with default values or javasctipt types
const todoStore = new ClientStore<ToDo>("todo", {
$name: String,
description: "No Description",
complete: false
});
Works with any web library or framework. Here is an example using React.
// app.tsx
import {useClientStore} from "client-web-storage/helpers/use-client-store";
import {Todo} from "./stores/todo.store";
import FlatList from "flatlist-react";
const App = () => {
const todos = useClientStore<Todo>("todo");
if(todos.processing) {
return <Spinner />
}
if(todos.error) {
return <p className="error">{error.message}</p>
}
const handleCreatItem = async () => {
await todos.createItem({
// only name is required (marked with $), the store will auto fill the other fields with defaults
name: "Go to Gym"
});
}
return (
<>
<button type="button" onClick={handleCreatItem}>create todo</button>
<FlatList list={todos.items} renderItem={renderTodo}/>
</>
)
}
Installation
In Node Projects:
npm install client-web-storage
import {Schema, ClientStore} from "client-web-storage";
In the Browser
<!-- use the latest version -->
<script src="https://unpkg.com/client-web-storage/client-web-storage.min.js"></script>
<!-- use a specific version -->
<script src="https://unpkg.com/client-web-storage@1.7.5/client-web-storage.min.js"></script>
<script>
const {Schema, ClientStore} = window.CWS;
</script>
Documentation
Application Examples
API References
1.7.10
2 years ago
1.7.11
2 years ago
1.7.12
2 years ago
1.7.13
2 years ago
1.7.14
2 years ago
1.7.9
2 years ago
1.7.8
2 years ago
1.7.7
2 years ago
1.7.6
2 years ago
1.7.5
2 years ago
1.7.4
2 years ago
1.7.3
2 years ago
1.7.2-next
2 years ago
1.7.2
2 years ago
1.7.1
2 years ago
1.7.0
2 years ago
1.6.0
2 years ago
1.6.6-next
2 years ago
1.7.1-next
2 years ago
1.7.4-next
2 years ago
1.6.7-next
2 years ago
1.7.0-next
2 years ago
1.7.3-next
2 years ago
1.6.2-next
2 years ago
1.6.5-next
2 years ago
1.5.1
2 years ago
1.6.1-next
2 years ago
1.6.4-next
2 years ago
1.6.3-next
2 years ago
1.6.0-next
2 years ago
1.5.0
3 years ago
1.4.5
3 years ago
1.4.4
3 years ago
1.4.3
3 years ago
1.4.2
3 years ago
1.4.1
3 years ago
1.4.0
3 years ago
1.3.0
3 years ago
1.2.1
3 years ago
1.2.0
3 years ago
1.1.0
3 years ago
1.0.3
3 years ago
1.0.2
3 years ago
1.0.1
3 years ago
1.0.0
3 years ago
1.2.3-beta
3 years ago
1.2.2-beta
3 years ago
1.2.1-beta
3 years ago
1.2.0-beta
3 years ago
1.1.0-beta
3 years ago