Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/foopis23/ts-store
ts-store is a simple key-value store interface for TypeScript
https://github.com/foopis23/ts-store
store typescript
Last synced: about 23 hours ago
JSON representation
ts-store is a simple key-value store interface for TypeScript
- Host: GitHub
- URL: https://github.com/foopis23/ts-store
- Owner: foopis23
- License: mit
- Created: 2023-04-12T17:13:39.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-04-12T17:28:33.000Z (over 1 year ago)
- Last Synced: 2024-05-30T02:17:40.445Z (5 months ago)
- Topics: store, typescript
- Language: TypeScript
- Homepage:
- Size: 8.79 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ts-store
ts-store is a simple key-value store interface for TypeScript. The main use case
is for library authors to allow users to provide their own store implementation.The goals of this project are:
- Provide a simple, reusable interface for store implementations
- Provide modern JS/TS experience (e.g. async/await, promises, etc.)
- Stores can be implemented for a wide range platforms (e.g. browser, node, etc.)
- Stores can be implemented for a wide range of storage types (e.g. memory, disk, mongo, localstorage, etc.)## Creating a Store Implementation
To create a store implementation, implement the `Store` interface.
### Class Example
```typescript
import { Store } from "ts-store";class MyStore implements Store {
get(key: string): Promise {
// ...
}set(key: string, value: any): Promise {
// ...
}delete(key: string): Promise {
// ...
}
}
```### Object Example
```typescript
import { Store } from "ts-store";const myStore: Store = {
get(key: string): Promise {
// ...
},set(key: string, value: any): Promise {
// ...
},delete(key: string): Promise {
// ...
},
};
```See [memory store](src/memory-store.ts) for a more complete example.
## Using a Store Implementation
### Example Library
```typescript
// Library code
import { Store } from "ts-store";function helloWorldLibrary(store: Store) {
const saveHello = (value: string) => store.set("hello", value);
const getHello = () => store.get("hello");return {
saveHello,
getHello,
};
}// Use the library
import { MemoryStore } from "ts-store"; // or your own store implementationasync function main() {
const lib = helloWorldLibrary(new MemoryStore());// save and read example
await lib.saveHello("world");
const hello = await lib.getHello();
console.log(hello); // { key: 'hello', value: 'world', createdAt: 1681318294496, updatedAt: 1681318294496 }// wait a second
await new Promise((resolve) => setTimeout(resolve, 1000));// update and read example
await lib.saveHello("gamer");
const hello2 = await lib.getHello();
console.log(hello2); // { key: 'hello', value: 'gamer', createdAt: 1681318294496, updatedAt: 1681318295500 }
}
main();
```