Documentation
    Preparing search index...

    Module @fourjs/serialization

    @fourjs/serialization

    Scene serialization and migrations. Part of fourJS.

    Implements §79–80 of docs/SPECIFICATION.md; shipped in Phase 11 (§113a). Documents are versioned (SCENE_FORMAT_VERSION = 1), canonical, and diff-friendly; round trips are byte-identical.

    • Format — SceneDocument / SceneNodeDocument / ComponentDocument types, encodeSceneDocument / decodeSceneDocument (canonical JSON text), and validators (validateSceneDocument, transform/vector/quaternion document validation).
    • §96 untrusted text — decodeSceneDocument(text, limits?) takes UntrustedJsonLimits (maximumTextLength, maximumDepth; finite defaults) and refuses an over-budget or over-deep document with UNTRUSTED_INPUT_REJECTED before validateNode recurses. validateSceneDocument is deliberately unguarded — it takes values, not text.
    • Serializer — serializeScene / instantiateScene over a ComponentSerializerRegistry keyed by component class; createDefaultComponentSerializers covers the built-in components (including PoseTarget).
    • Migrations (§80) — SceneMigration / SceneMigrationRegistry, migrateSceneDocument / runSceneMigrations, with structured warnings.
    • JSON utilities — JsonValue guards (isJsonObject, isJsonArray, asJsonObject) and cloneJsonValue (re-exported from @fourjs/core, __proto__-refusing).
    • Components without a registered serializer are silently unsaved (documented boundary); restored node ids can collide with the live counter.
    • §79 documents deliberately do not carry solver warm-start state — a contact-free save replays bit-identically, an in-contact save diverges only through warm-start; §34 snapshots (@fourjs/diagnostics) carry that state.
    • The binary .four format is not implemented; the JSON document is the shipped format.

    Unit tests are colocated in tests/ per §92.

    Workspace name @fourjs/serialization; publishes as @danielsimonjr/fourjs-serialization.

    ComponentSerializerRegistry
    SceneMigrationRegistry
    ComponentDocument
    ComponentSerializer
    InstantiateSceneOptions
    MigrateSceneDocumentOptions
    QuaternionDocument
    SceneDocument
    SceneMigrationContext
    SceneMigrationWarning
    SceneNodeDocument
    SerializeSceneOptions
    TransformDocument
    UntrustedJsonLimits
    Vector3Document
    JsonObject
    JsonValue
    SceneMigration
    UnknownComponentPolicy
    COMPONENT_SERIALIZERS
    GROUP_NODE_TYPE
    PACKAGE_NAME
    POSE_TARGET_SERIALIZER
    SCENE_FORMAT_VERSION
    SCENE_MIGRATIONS
    SCENE_NODE_TYPE
    applyTransformDocument
    asJsonObject
    cloneJsonValue
    createDefaultComponentSerializers
    decodeSceneDocument
    encodeSceneDocument
    instantiateScene
    instantiateSceneNodes
    isJsonArray
    isJsonObject
    migrateSceneDocument
    runSceneMigrations
    serializeScene
    validateQuaternionDocument
    validateSceneDocument
    validateVector3Document