# @canvas-js/okra-lmdb

> Native NodeJS bindings for Okra over LMDB

Latest version **0.2.4** (published 2025-04-10) · MIT license · 0 weekly downloads

## Install

```sh
npm install @canvas-js/okra-lmdb
pnpm add @canvas-js/okra-lmdb
yarn add @canvas-js/okra-lmdb
bun add @canvas-js/okra-lmdb
```

## Health

**Score 40/100 (D)** — status: maintenance-mode.

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads; large bundle; pre 1.0.

Negative: stale; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.4 |
| Published | 2025-04-10 |
| First published | 2024-06-10 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | >=18 |
| Dependencies | 5 |
| Unpacked size | 13.1 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 34 |
| Author | Joel Gustafson |
| Maintainers | joelg, raykyri, rjwebb |

## Links

- npm: https://www.npmjs.com/package/@canvas-js/okra-lmdb
- Repository: https://github.com/canvasxyz/okra-js
- Homepage: https://github.com/canvasxyz/okra-js#readme
- Issues: https://github.com/canvasxyz/okra-js/issues
- npm.io page: https://npm.io/package/@canvas-js/okra-lmdb

## Dependencies (5)

- [p-queue](https://npm.io/package/p-queue.md) ^8.1.0
- [detect-libc](https://npm.io/package/detect-libc.md) ^2.0.3
- [uint8arrays](https://npm.io/package/uint8arrays.md) ^5.1.0
- [@canvas-js/okra](https://npm.io/package/@canvas-js/okra.md) ^0.4.7
- [@canvas-js/utils](https://npm.io/package/@canvas-js/utils.md) ^1.0.0

## Recent versions

- 0.2.4 (latest) — 2025-04-10
- 0.2.3 — 2025-04-10
- 0.2.2 — 2025-03-19
- 0.2.1 — 2024-11-14
- 0.2.0 — 2024-09-11
- 0.1.5 — 2024-09-08
- 0.1.4 — 2024-09-03
- 0.1.3 — 2024-08-27
- 0.1.2 — 2024-06-12
- 0.1.1 — 2024-06-12
- 0.1.0 — 2024-06-10

## README

# `@canvas-js/okra-node`

[![NPM version](https://img.shields.io/npm/v/@canvas-js/okra-node)](https://www.npmjs.com/package/@canvas-js/okra-node) ![TypeScript types](https://img.shields.io/npm/types/@canvas-js/okra-node)

## Install

```
npm i @canvas-js/okra-node
```

The following targets are supported:

- `x86_64-linux-gnu`
- `x86_64-linux-musl`
- `aarch64-linux-gnu`
- `aarch64-linux-musl`
- `x86_64-macos`
- `aarch64-macos`

## Usage

```ts
import { Tree } from "@canvas-js/okra-lmdb"

const tree = new Tree("./path/to/data/directory")

await tree.write((txn) => {
  txn.set(new Uint8Array([0, 1, 2]), new Uint8Array([4, 5, 6]))
})

await tree.close()
```

## API

```ts
import { Metadata, ReadOnlyTransaction, ReadWriteTransaction, Leaf } from "@canvas-js/okra"

export interface TreeOptions extends Partial<Metadata> {
  mapSize?: number
	databases?: number
}

export declare class Tree {
    public static fromEntries(
      path: string,
      init: TreeOptions,
      entries: AsyncIterable<[Uint8Array, Leaf]>,
    ): Promise<Tree>

    public readonly metadata: Metadata;

    public constructor(path: string, init?: TreeOptions);

    public close(): Promise<void>
    public clear(): Promise<void>
    public build(): Promise<void>
    public resize(mapSize: number): Promise<void>
    public read<T>(callback: (txn: ReadOnlyTransaction) => Awaitable<T>): Promise<T>
    public write<T>(callback: (txn: ReadWriteTransaction) => Awaitable<T>): Promise<T>
}
```

---
_Source: https://npm.io/package/@canvas-js/okra-lmdb · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
