# zarrita.js
[](https://www.npmjs.com/package/zarrita)
[](https://github.com/manzt/zarrita.js/raw/main/LICENSE)

a minimal & modular Zarr implementation in TypeScript
- **Zero dependencies** (optionally
[`scijs/ndarray`](https://github.com/scijs/ndarray))
- Runs natively in **Node**, **Browsers**, and **Deno** (ESM)
- Supports **v2** or **v3** protocols, C & F-order arrays, diverse data-types,
and [ZEP2 Sharding](https://zarr.dev/zeps/draft/ZEP0002.html)
- Allows flexible **storage** backends and **compression** codecs
- Provides rich, in-editor **type information** via
[template literal types](https://www.typescriptlang.org/docs/handbook/2/template-literal-types.html)
## Installation
```sh
npm install zarrita
```
Read
[the documentation](https://manzt.github.io/zarrita.js/get-started.html#getting-started)
to learn more about other environments.
## Usage
```javascript
import * as zarr from "zarrita";
const store = new zarr.FetchStore("http://localhost:8080/data.zarr");
const arr = await zarr.open(store, { kind: "array" }); // zarr.Array
// read chunk
const chunk = await arr.getChunk([0, 0]);
// Option 1: Builtin getter, no dependencies
const full = await zarr.get(arr); // { data: Int32Array, shape: number[], stride: number[] }
// Option 2: scijs/ndarray getter, includes `ndarray` and `ndarray-ops` dependencies
import { get } from "@zarrita/ndarray";
const full = await get(arr); // ndarray.Ndarray
// read region
const region = await get(arr, [null, zarr.slice(6)]);
```
Read [the documentation](https://manzt.github.io/zarrita.js) to learn more.