# Interface: FolderAdapter

Defined in: [packages/core/src/storage/folder-adapter.ts:58](https://github.com/leifriksheim/minca/blob/main/core/src/storage/folder-adapter.ts#L58)

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.

## Extends

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

## Properties

| Property | Modifier | Type | Description | Defined in |
| ------ | ------ | ------ | ------ | ------ |
| <a id="property-namespace"></a> `namespace` | `readonly` | `string` | Where inside the folder this adapter keeps its files | [packages/core/src/storage/folder-adapter.ts:60](https://github.com/leifriksheim/minca/blob/main/core/src/storage/folder-adapter.ts#L60) |

## 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`\>

#### Inherited from

[`StorageAdapter`](https://minca.dev/api/core/interfaces/StorageAdapter.md).[`batch`](https://minca.dev/api/core/interfaces/StorageAdapter.md#batch)

***

### 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`\>

#### Inherited from

[`StorageAdapter`](https://minca.dev/api/core/interfaces/StorageAdapter.md).[`close`](https://minca.dev/api/core/interfaces/StorageAdapter.md#close)

***

### 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`\>

#### Inherited from

[`StorageAdapter`](https://minca.dev/api/core/interfaces/StorageAdapter.md).[`commit`](https://minca.dev/api/core/interfaces/StorageAdapter.md#commit)

***

### 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`\>

#### Inherited from

[`StorageAdapter`](https://minca.dev/api/core/interfaces/StorageAdapter.md).[`delete`](https://minca.dev/api/core/interfaces/StorageAdapter.md#delete)

***

### 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`\>

#### Inherited from

[`StorageAdapter`](https://minca.dev/api/core/interfaces/StorageAdapter.md).[`deleteVersion`](https://minca.dev/api/core/interfaces/StorageAdapter.md#deleteversion)

***

### 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`\>\])[]\>

#### Inherited from

[`StorageAdapter`](https://minca.dev/api/core/interfaces/StorageAdapter.md).[`entries`](https://minca.dev/api/core/interfaces/StorageAdapter.md#entries)

***

### 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`\>

#### Inherited from

[`StorageAdapter`](https://minca.dev/api/core/interfaces/StorageAdapter.md).[`get`](https://minca.dev/api/core/interfaces/StorageAdapter.md#get)

***

### 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`\>

#### Inherited from

[`StorageAdapter`](https://minca.dev/api/core/interfaces/StorageAdapter.md).[`getVersion`](https://minca.dev/api/core/interfaces/StorageAdapter.md#getversion)

***

### 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`)[]\>

#### Inherited from

[`StorageAdapter`](https://minca.dev/api/core/interfaces/StorageAdapter.md).[`getVersions`](https://minca.dev/api/core/interfaces/StorageAdapter.md#getversions)

***

### 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`[]\>

#### Inherited from

[`StorageAdapter`](https://minca.dev/api/core/interfaces/StorageAdapter.md).[`list`](https://minca.dev/api/core/interfaces/StorageAdapter.md#list)

***

### listVersionIds()

```ts
listVersionIds(): Promise<readonly string[]>;
```

Defined in: [packages/core/src/storage/folder-adapter.ts:67](https://github.com/leifriksheim/minca/blob/main/core/src/storage/folder-adapter.ts#L67)

Every version id currently on disk, whatever the entries believe

#### Returns

`Promise`\<readonly `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`\>

#### Inherited from

[`StorageAdapter`](https://minca.dev/api/core/interfaces/StorageAdapter.md).[`put`](https://minca.dev/api/core/interfaces/StorageAdapter.md#put)

***

### 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`\>

#### Inherited from

[`StorageAdapter`](https://minca.dev/api/core/interfaces/StorageAdapter.md).[`putVersion`](https://minca.dev/api/core/interfaces/StorageAdapter.md#putversion)

***

### reload()

```ts
reload(): Promise<FolderReload>;
```

Defined in: [packages/core/src/storage/folder-adapter.ts:65](https://github.com/leifriksheim/minca/blob/main/core/src/storage/folder-adapter.ts#L65)

Re-reads the directory, picking up writes made by another origin or
device; the web has no change notification. Pair it with [reconcileFolder](https://minca.dev/api/core/functions/reconcileFolder.md).

#### Returns

`Promise`\<[`FolderReload`](https://minca.dev/api/core/interfaces/FolderReload.md)\>
