# Interface: StorageAdapter

Defined in: [packages/core/src/types.ts:260](https://github.com/leifriksheim/minca/blob/main/core/src/types.ts#L260)

Where a store keeps its bytes: entries by string key, and version bodies by
id. Write one to keep a node's data somewhere new. The optional methods
only save round trips.

## Extended by

- [`FolderAdapter`](https://minca.dev/api/core/interfaces/FolderAdapter.md)

## Methods

### batch()

```ts
batch(ops): Promise<void>;
```

Defined in: [packages/core/src/types.ts:276](https://github.com/leifriksheim/minca/blob/main/core/src/types.ts#L276)

Applies these puts and deletes; should be atomic

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `ops` | readonly [`BatchOp`](https://minca.dev/api/core/type-aliases/BatchOp.md)[] |

#### Returns

`Promise`\<`void`\>

***

### close()

```ts
close(): Promise<void>;
```

Defined in: [packages/core/src/types.ts:278](https://github.com/leifriksheim/minca/blob/main/core/src/types.ts#L278)

Releases it

#### Returns

`Promise`\<`void`\>

***

### commit()?

```ts
commit?(write): Promise<void>;
```

Defined in: [packages/core/src/types.ts:288](https://github.com/leifriksheim/minca/blob/main/core/src/types.ts#L288)

Optional: stores these versions, applies these entry ops and deletes
these versions in one atomic write. Without it: `putVersion` each,
then `batch`, then `deleteVersion` each.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `write` | \{ `ops`: readonly [`BatchOp`](https://minca.dev/api/core/type-aliases/BatchOp.md)[]; `remove`: readonly `string`[]; `store`: readonly [`Version`](https://minca.dev/api/core/interfaces/Version.md)\<`unknown`\>[]; \} |
| `write.ops` | readonly [`BatchOp`](https://minca.dev/api/core/type-aliases/BatchOp.md)[] |
| `write.remove` | readonly `string`[] |
| `write.store` | readonly [`Version`](https://minca.dev/api/core/interfaces/Version.md)\<`unknown`\>[] |

#### Returns

`Promise`\<`void`\>

***

### delete()

```ts
delete(key): Promise<void>;
```

Defined in: [packages/core/src/types.ts:266](https://github.com/leifriksheim/minca/blob/main/core/src/types.ts#L266)

Removes an entry; absent is fine

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `key` | `string` |

#### Returns

`Promise`\<`void`\>

***

### deleteVersion()

```ts
deleteVersion(id): Promise<void>;
```

Defined in: [packages/core/src/types.ts:274](https://github.com/leifriksheim/minca/blob/main/core/src/types.ts#L274)

Delete a version by ID

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `id` | `string` |

#### Returns

`Promise`\<`void`\>

***

### entries()?

```ts
entries?(prefix): Promise<readonly (readonly [string, Uint8Array<ArrayBufferLike>])[]>;
```

Defined in: [packages/core/src/types.ts:280](https://github.com/leifriksheim/minca/blob/main/core/src/types.ts#L280)

Optional: every entry under a prefix with its value, in one read. Without it, `list` then `get` each.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `prefix` | `string` |

#### Returns

`Promise`\<readonly (readonly \[`string`, `Uint8Array`\<`ArrayBufferLike`\>\])[]\>

***

### get()

```ts
get(key): Promise<Uint8Array<ArrayBufferLike> | null>;
```

Defined in: [packages/core/src/types.ts:262](https://github.com/leifriksheim/minca/blob/main/core/src/types.ts#L262)

The entry's bytes, or null

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `key` | `string` |

#### Returns

`Promise`\<`Uint8Array`\<`ArrayBufferLike`\> \| `null`\>

***

### getVersion()

```ts
getVersion(id): Promise<Version<unknown> | null>;
```

Defined in: [packages/core/src/types.ts:272](https://github.com/leifriksheim/minca/blob/main/core/src/types.ts#L272)

Get a version by ID

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `id` | `string` |

#### Returns

`Promise`\<[`Version`](https://minca.dev/api/core/interfaces/Version.md)\<`unknown`\> \| `null`\>

***

### getVersions()?

```ts
getVersions?(ids): Promise<readonly (Version<unknown> | null)[]>;
```

Defined in: [packages/core/src/types.ts:282](https://github.com/leifriksheim/minca/blob/main/core/src/types.ts#L282)

Optional: many versions by id in one read, null where absent, in the order asked. Without it, `getVersion` each.

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `ids` | readonly `string`[] |

#### Returns

`Promise`\<readonly ([`Version`](https://minca.dev/api/core/interfaces/Version.md)\<`unknown`\> \| `null`)[]\>

***

### list()

```ts
list(prefix?): Promise<string[]>;
```

Defined in: [packages/core/src/types.ts:268](https://github.com/leifriksheim/minca/blob/main/core/src/types.ts#L268)

Every key starting with `prefix`, in any order

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `prefix?` | `string` |

#### Returns

`Promise`\<`string`[]\>

***

### put()

```ts
put(key, value): Promise<void>;
```

Defined in: [packages/core/src/types.ts:264](https://github.com/leifriksheim/minca/blob/main/core/src/types.ts#L264)

Sets an entry

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `key` | `string` |
| `value` | `Uint8Array` |

#### Returns

`Promise`\<`void`\>

***

### putVersion()

```ts
putVersion(version): Promise<void>;
```

Defined in: [packages/core/src/types.ts:270](https://github.com/leifriksheim/minca/blob/main/core/src/types.ts#L270)

Store a version

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `version` | [`Version`](https://minca.dev/api/core/interfaces/Version.md) |

#### Returns

`Promise`\<`void`\>
