cbor-ld 0.1.0

CBOR-LD 1.0 processor built on cbor2 with semantic compression, JSON-LD context processing, type tables and deterministic CBOR output.
Documentation
use std::collections::BTreeMap;

/// The CBOR-LD 1.0 semantic tag, `0xcb1d`.
pub const CBOR_LD_TAG: u64 = 0xcb1d;

pub(crate) const DEFAULT_REGISTRY_ENTRY_ID: u64 = 1;
pub(crate) const FIRST_CUSTOM_TERM_ID: u64 = 100;

pub(crate) const XSD_BOOLEAN: &str = "http://www.w3.org/2001/XMLSchema#boolean";
pub(crate) const XSD_DATE: &str = "http://www.w3.org/2001/XMLSchema#date";
pub(crate) const XSD_DATETIME: &str = "http://www.w3.org/2001/XMLSchema#dateTime";
pub(crate) const XSD_DOUBLE: &str = "http://www.w3.org/2001/XMLSchema#double";
pub(crate) const XSD_INTEGER: &str = "http://www.w3.org/2001/XMLSchema#integer";
pub(crate) const SECURITY_CRYPTO_SUITE: &str = "https://w3id.org/security#cryptosuiteString";
pub(crate) const SECURITY_MULTIBASE: &str = "https://w3id.org/security#multibase";

pub(crate) fn keywords_table() -> BTreeMap<String, u64> {
    KEYWORDS_TABLE
        .iter()
        .map(|(key, id)| ((*key).to_owned(), *id))
        .collect()
}

pub(crate) const KEYWORDS_TABLE: &[(&str, u64)] = &[
    ("@context", 0),
    ("@type", 2),
    ("@id", 4),
    ("@value", 6),
    ("@direction", 8),
    ("@graph", 10),
    ("@included", 12),
    ("@index", 14),
    ("@json", 16),
    ("@language", 18),
    ("@list", 20),
    ("@nest", 22),
    ("@reverse", 24),
    ("@base", 26),
    ("@container", 28),
    ("@default", 30),
    ("@embed", 32),
    ("@explicit", 34),
    ("@none", 36),
    ("@omitDefault", 38),
    ("@prefix", 40),
    ("@preserve", 42),
    ("@protected", 44),
    ("@requireAll", 46),
    ("@set", 48),
    ("@version", 50),
    ("@vocab", 52),
    ("@propagate", 54),
];

pub(crate) const STRING_TABLE: &[(&str, u64)] = &[
    ("https://www.w3.org/ns/activitystreams", 16),
    ("https://www.w3.org/2018/credentials/v1", 17),
    ("https://www.w3.org/ns/did/v1", 18),
    ("https://w3id.org/security/suites/ed25519-2018/v1", 19),
    ("https://w3id.org/security/suites/ed25519-2020/v1", 20),
    ("https://w3id.org/cit/v1", 21),
    ("https://w3id.org/age/v1", 22),
    ("https://w3id.org/security/suites/x25519-2020/v1", 23),
    ("https://w3id.org/veres-one/v1", 24),
    ("https://w3id.org/webkms/v1", 25),
    ("https://w3id.org/zcap/v1", 26),
    ("https://w3id.org/security/suites/hmac-2019/v1", 27),
    ("https://w3id.org/security/suites/aes-2019/v1", 28),
    ("https://w3id.org/vaccination/v1", 29),
    ("https://w3id.org/vc-revocation-list-2020/v1", 30),
    ("https://w3id.org/dcc/v1", 31),
    ("https://w3id.org/vc/status-list/v1", 32),
    ("https://www.w3.org/ns/credentials/v2", 33),
    ("https://w3id.org/security/data-integrity/v1", 48),
    ("https://w3id.org/security/multikey/v1", 49),
    ("https://purl.imsglobal.org/spec/ob/v3p0/context.json", 50),
    ("https://w3id.org/security/data-integrity/v2", 51),
];

pub(crate) const CRYPTOSUITE_TYPED_TABLE: &[(&str, u64)] = &[
    ("ecdsa-rdfc-2019", 1),
    ("ecdsa-sd-2023", 2),
    ("eddsa-rdfc-2022", 3),
    ("ecdsa-xi-2023", 4),
];