https://github.com/blackglory/extra-disk-store
🌲 A disk-based persistent store
https://github.com/blackglory/extra-disk-store
esm library nodejs npm-package typescript
Last synced: 6 months ago
JSON representation
🌲 A disk-based persistent store
- Host: GitHub
- URL: https://github.com/blackglory/extra-disk-store
- Owner: BlackGlory
- License: mit
- Created: 2022-11-30T15:52:51.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2024-09-24T18:03:35.000Z (almost 2 years ago)
- Last Synced: 2025-01-01T17:17:48.565Z (over 1 year ago)
- Topics: esm, library, nodejs, npm-package, typescript
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/extra-disk-store
- Size: 1.28 MB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# extra-disk-store
A disk-based persistent store.
## Install
```sh
npm install --save extra-disk-store
# or
yarn add extra-disk-store
```
## Usage
```ts
import { DiskStore } from 'extra-disk-store'
const store = await DiskStore.create('/tmp/store')
await store.set('key', Buffer.from('value'))
const value = store.get('key')?.toString()
```
## API
### DiskStore
```ts
class DiskStore {
static create(filename?: string): Promise
close(): void
has(key: string): boolean
get(key: string): Buffer | undefined
set(key: string, value: Buffer): void
delete(key: string): void
clear(): void
keys(): IterableIterator
}
```
### DiskStoreWithCache
```ts
interface ICache {
set(key: string, value: Buffer | false): void
get(key: string): Buffer | false | undefined
delete(key: string): void
clear(): void
}
class DiskStoreWithCache {
constructor(store: DiskStore, cache: ICache)
close(): void
has(key: string): boolean
get(key: string): Buffer | undefined
set(key: string, value: Buffer): void
delete(key: string): void
clear(): void
keys(): IterableIterator
}
```
### DiskStoreView
```ts
interface IKeyConverter {
toString: (value: T) => string
fromString: (value: string) => T | undefined
}
interface IValueConverter {
toBuffer: (value: T) => Buffer
fromBuffer: (value: Buffer) => T
}
class DiskStoreView {
constructor(
store: DiskStore | DiskStoreWithCache
, keyConverter: IKeyConverter
, valueConverter: IValueConverter
) {}
has(key: K): boolean
get(key: K): V | undefined
set(key: K, value: V): void
delete(key: K): void
clear(): void
keys(): IterableIterator
}
```
### DiskStoreAsyncView
```ts
interface IKeyAsyncConverter {
toString: (value: T) => Awaitable
fromString: (value: string) => Awaitable
}
interface IValueAsyncConverter {
toBuffer: (value: T) => Awaitable
fromBuffer: (value: Buffer) => Awaitable
}
class DiskStoreAsyncView {
constructor(
store: DiskStore | DiskStoreWithCache
, keyConverter: IKeyAsyncConverter
, valueConverter: IValueAsyncConverter
) {}
has(key: K): Promise
get(key: K): Promise
set(key: K, value: V): Promise
delete(key: K): Promise
clear(): void
keys(): AsyncIterableIterator
}
```
### Converters
#### PassthroughKeyConverter
```ts
class PassthroughKeyConverter implements IKeyConverter
```
#### PassthroughValueConverter
```ts
class PassthroughValueConverter implements IValueConverter
```
#### IndexKeyConverter
```ts
class IndexKeyConverter implements IKeyConverter
```
#### PrefixKeyConverter
```ts
class PrefixKeyConverter implements IKeyConverter {
constructor(keyConverter: IKeyConverter, prefix: string)
}
```
#### PrefixKeyAsyncConverter
```ts
class PrefixKeyAsyncConverter implements IKeyAsyncConverter {
constructor(
keyConverter: IKeyConverter | IKeyAsyncConverter
, prefix: string
)
toString(value: T): Promise
fromString(value: string): Promise
}
```
#### JSONKeyConverter
```ts
class JSONKeyConverter implements IKeyConverter
```
#### JSONValueConverter
```ts
class JSONValueConverter implements IValueConverter {
constructor(encoding: BufferEncoding = 'utf-8')
}
```
#### LZ4ValueConverter
```ts
class LZ4ValueConverter implements IValueConverter {
constructor(valueConverter: IValueConverter)
}
```
#### LZ4ValueAsyncConverter
```ts
class LZ4ValueAsyncConverter implements IValueAsyncConverter {
constructor(valueConverter: IValueConverter | IValueAsyncConverter)
toBuffer(value: T): Promise
fromBuffer(value: Buffer): Promise
}
```
#### ZstandardValueAsyncConverter
```ts
class ZstandardValueAsyncConverter implements IValueAsyncConverter {
constructor(
valueConverter: IValueConverter | IValueAsyncConverter
, level: number
)
toBuffer(value: T): Promise
fromBuffer(value: Buffer): Promise
}
```