@effect-avro/node
v0.0.3
Published
Node.js Avro object container file helpers for @effect-avro
Readme
@effect-avro/node
Node.js Avro object container file helpers for @effect-avro/core.
The default AvroNode.layer is Node-specific and provides the Effect FileSystem.FileSystem service with node:fs/promises. Use AvroNode.layerNoDeps when an application wants to provide its own filesystem implementation.
Install
pnpm add @effect-avro/node @effect-avro/core effectUsage
import { Effect } from "effect"
import { AvroNode, decodeContainer, encodeContainer, readFile, writeFile } from "@effect-avro/node"
const schema = {
type: "record",
name: "Event",
fields: [{ name: "id", type: "long" }]
} as const
const file = encodeContainer(schema, [{ id: 1 }, { id: 2 }])
const decoded = decodeContainer(file)
const program = Effect.gen(function*() {
yield* writeFile("events.avro", schema, [{ id: 1 }, { id: 2 }])
return yield* readFile("events.avro")
}).pipe(
Effect.provide(AvroNode.layer)
)Features
- Effect service and layer API via
AvroNode. - Effect Schema values for container encode options and typed container files.
- Avro object container file header, metadata, sync marker, and block handling.
nulland rawdeflatecodecs.- Node-backed default filesystem layer plus
AvroNode.layerNoDepsfor custom runtimes and tests. - Async iterable reader for Node streams.
- Schema-backed
AvroContainerErrortagged errors forEffect.catchTag.
