morphir-core 0.2.0

Morphir core model definitions and utilities
Documentation
[package]
name = "morphir-core"
# Published on its own 0.x.y line, not the shared workspace version.
# See docs/contributors/publishing-crates.md.
version = "0.2.0"
edition.workspace = true
rust-version.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
documentation = "https://docs.rs/morphir-core"
readme = "README.md"
description = "Morphir core model definitions and utilities"
keywords = ["morphir", "ir", "domain-modeling", "functional", "finos"]
categories = ["development-tools", "data-structures", "encoding"]
# The tests read shared fixtures from the workspace, so they stay out of the package.
exclude = ["/tests/"]

[lib]
name = "morphir_core"
path = "src/lib.rs"

[dependencies]
anyhow = { workspace = true }
thiserror = { workspace = true }
serde = { version = "1.0", features = ["derive"] }
# `preserve_order` keeps a record's field order, which the IR treats as declaration order.
# `arbitrary_precision` keeps a number's lexeme, which a DocumentLiteral carries verbatim.
# `unbounded_depth` lets the JSON reader turn off serde_json's own 128-level recursion limit so
# the nesting ceiling it reports is the profile's, not the parser's.
serde_json = { version = "1.0", features = [
    "preserve_order",
    "arbitrary_precision",
    "unbounded_depth",
] }
schemars = { version = "1.0", features = ["derive", "indexmap2"] }
indexmap = { version = "2", features = ["serde"] }
lasso = { version = "0.7", features = ["multi-threaded", "serde"] }
# The YAML profile reader walks this parser's event stream directly; the pin and its features are
# the workspace's, so nothing else in the tree can link a second copy.
granit-parser = { workspace = true }
# The JSON reader's duplicate-member/nesting probe and its parse both recurse once per nesting
# level; `stacker::maybe_grow` lets `json::read` grow a large stack on demand instead of assuming
# its caller's, the way morphir-common's own IR transport already does.
stacker = { workspace = true }
sha2 = "0.11"
# A DecimalLiteral is a genuine decimal; the lexeme is carried beside it because the wire keeps the
# spelling. Both build on num-bigint, which IntegerLiteral uses directly.
bigdecimal = "0.4"
num-bigint = "0.5"

[dev-dependencies]
rstest = "0.27"