cp-ast-json 0.1.3

Lossless JSON serialization boundary for cp-ast-core AST
Documentation

Lossless JSON serialization for cp-ast-core AST documents.

Provides full-snapshot JSON roundtrip that preserves arena structure, tombstones, IDs, counters, and ordering through Rust → JS → Rust cycles.

Use [serialize_ast] and [deserialize_ast] for complete documents, or [serialize_ast_compact] when byte size matters. Editor integrations can serialize actions with [serialize_action] / [deserialize_action] and serialize UI projections with [serialize_projection].

Example

use cp_ast_core::operation::AstEngine;
use cp_ast_json::{deserialize_ast, serialize_ast};

let engine = AstEngine::new();
let json = serialize_ast(&engine).expect("serialize");
let restored = deserialize_ast(&json).expect("deserialize");

assert_eq!(restored.structure.root(), engine.structure.root());

Schema Notes

IDs are encoded as decimal strings so JavaScript callers do not lose integer precision. The top-level JSON document is versioned with [dto::CURRENT_SCHEMA_VERSION].