Documentation
[package]
authors = ["Nathan Sobo <nathan@github.com>", "Yinan Long <lynweklm@gmail.com>"]
description = "N-API bindings"
edition = "2021"
keywords = ["NodeJS", "Node", "FFI", "NAPI", "n-api"]
license = "MIT"
name = "napi"
readme = "README.md"
repository = "https://github.com/napi-rs/napi-rs"
rust-version.workspace = true
version = "3.7.1"

[lib]
doctest = false

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[package.metadata.workspaces]
independent = true

[features]
async = ["tokio_rt"]
chrono_date = ["chrono", "napi5"]
# Enable deprecated types and traits for compatibility
compat-mode = []
default = ["napi4", "dyn-symbols"]
deferred_trace = ["napi4"]
error_anyhow = ["anyhow"]
experimental = ["napi-sys/experimental"]
full = [
  "latin1",
  "napi10",
  "async",
  "serde-json",
  "experimental",
  "chrono_date",
]
object_indexmap = ["indexmap"]
latin1 = ["encoding_rs"]
napi1 = []
napi2 = ["napi1", "napi-sys/napi2"]
napi3 = ["napi2", "napi-sys/napi3"]
napi4 = ["napi3", "napi-sys/napi4"]
napi5 = ["napi4", "napi-sys/napi5"]
napi6 = ["napi5", "napi-sys/napi6"]
napi7 = ["napi6", "napi-sys/napi7"]
napi8 = ["napi7", "napi-sys/napi8"]
napi9 = ["napi8", "napi-sys/napi9"]
napi10 = ["napi9", "napi-sys/napi10"]
web_stream = ["futures-core", "tokio-stream", "napi4", "tokio_rt"]
noop = []
serde-json = ["serde", "serde_json"]
serde-json-ordered = ["serde-json", "serde_json/preserve_order"]
tokio_fs = ["tokio/fs"]
tokio_full = ["tokio/full"]
tokio_io_std = ["tokio/io-std"]
tokio_io_util = ["tokio/io-util"]
tokio_macros = ["tokio/macros"]
tokio_net = ["tokio/net"]
tokio_process = ["tokio/process"]
tokio_rt = ["tokio", "napi4"]
tokio_signal = ["tokio/signal"]
tokio_sync = ["tokio/sync"]
tokio_test_util = ["tokio/test-util"]
tokio_time = ["tokio/time"]
dyn-symbols = ["napi-sys/dyn-symbols"]
# Add a runtime Node version detection
node_version_detect = []
tracing = ["dep:tracing"]

[dependencies]
bitflags = "2"
ctor = "0.6.0"
nohash-hasher = "0.2.0"
rustc-hash = "2.1.1"

[dependencies.anyhow]
optional = true
version = "1"

[dependencies.napi-sys]
path = "../sys"
version = "3.2.1"
default-features = false

[dependencies.encoding_rs]
optional = true
version = "0.8"

[dependencies.chrono]
optional = true
version = "0.4"

[dependencies.tracing]
optional = true
version = "0.1"

[target.'cfg(any(all(target_family = "wasm", tokio_unstable), not(target_family = "wasm")))'.dependencies]
tokio = { version = "1", features = [
  "rt",
  "rt-multi-thread",
  "sync",
], optional = true }

[target.'cfg(all(target_family = "wasm", not(tokio_unstable)))'.dependencies]
tokio = { version = "1", features = ["rt", "sync"], optional = true }

[dependencies.serde]
optional = true
version = "1"

[dependencies.serde_json]
optional = true
version = "1"

[dependencies.indexmap]
optional = true
version = "2"

[dependencies.futures-core]
optional = true
version = "0.3"

[dependencies.tokio-stream]
optional = true
version = "0.1"

[dependencies.futures]
version = "0.3"

[build-dependencies]
napi-build = { path = "../build", version = "2.3.1" }