yn: nodejs bindings to yrs
This project was bootstrapped by create-neon.
Building yn requires a supported version of Node and Rust.
To run the build, run:
$ npm run buildThis command uses the @neon-rs/cli utility to assemble the binary Node addon from the output of cargo.
yn ships prebuilt binaries for the common desktop platforms
(linux-x64-gnu, linux-arm64-gnu, darwin-x64, darwin-arm64,
win32-x64-msvc) bundled in a single package. A small loader picks the binary
matching the host at runtime, so consumers just import the package:
import { applyUpdates } from '@y-crdt/yn'
// or, CommonJS:
const { applyUpdates } = require('@y-crdt/yn')After building yn, you can explore its exports at the Node console. When run from
the project directory the loader falls back to the locally built index.node:
$ npm i
$ npm run build
$ node
> require('.').applyUpdates(true, [])
Uint8Array(2) [ 0, 0 ]In the project directory, you can run:
Installs the project, including running npm run build.
Builds the Node addon (index.node) from source, generating a release build with cargo --release.
Additional cargo build arguments may be passed to npm run build and similar commands. For example, to enable a cargo feature:
npm run build -- --feature=beetle
Similar to npm run build but generates a debug build with cargo.
Similar to npm run build but uses cross-rs to cross-compile for another platform. Use the CARGO_BUILD_TARGET environment variable to select the build target.
Runs the unit tests by calling cargo test. You can learn more about adding tests to your Rust code from the Rust book.
The directory structure of this project is:
yn/
├── Cargo.toml
├── README.md
├── src/
| └── lib.rs
├── index.node
├── package.json
└── target/
| Entry | Purpose |
|---|---|
Cargo.toml |
The Cargo manifest file, which informs the cargo command. |
README.md |
This file. |
src/ |
The directory tree containing the Rust source code for the project. |
lib.rs |
Entry point for the Rust source code. |
index.node |
A locally built Node addon for the host platform. In the published package this is replaced by per-platform index-<triple>.node binaries. |
load.cjs |
Runtime loader (the "main" entry) that selects the correct prebuilt binary for the host platform. |
index.mjs |
ESM entry point that re-exports the bindings from load.cjs. |
package.json |
The npm manifest file, which informs the npm command. |
target/ |
Binary artifacts generated by the Rust build. |
Learn more about: