An open API service indexing awesome lists of open source software.

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

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
}
```