IFClite TypeScript API
    Preparing search index...

    Variable IFCLITE_ATTRConst

    IFCLITE_ATTR: {
        CLASSIFICATIONS: "ifclite::classifications";
        DELETED: "ifclite::deleted";
        DERIVED: "ifclite::derived";
        GEOMETRY_REF: "ifclite::geometryRef";
        MATERIALS: "ifclite::materials";
        META: "ifclite::meta";
    }

    IFClite extension attributes for layered change tracking (docs/architecture/layer-prs/). Tools unaware of the namespace ignore these and still get valid IFCX composition (modulo deletion overlays, which bakeLayers can materialize away for foreign tools).

    Type Declaration

    • ReadonlyCLASSIFICATIONS: "ifclite::classifications"

      Collab structured-branch carriers (#1031): the collab runtime keeps classifications / materials / geometry refs as dedicated CRDT branches; on the IFCX wire they travel as ordinary attributes under these keys (psets/quantities use the bsi::ifc::v5a::<Set>::<Name> convention instead, so merge component keys stay pset:/qset:).

    • ReadonlyDELETED: "ifclite::deleted"

      Tombstone opinion: true deletes the entity (and shadows all weaker opinions for the path, including child paths); false resurrects it.

    • ReadonlyDERIVED: "ifclite::derived"

      Marks derived (cache) content excluded from canonical hashing.

    • ReadonlyGEOMETRY_REF: "ifclite::geometryRef"
    • ReadonlyMATERIALS: "ifclite::materials"
    • ReadonlyMETA: "ifclite::meta"

      Per-entity provenance carrier (createdBy / createdAt / lastEditedBy / lastEditedAt / previousPath). IFCX nodes have no provenance slot of their own, so without this key a snapshot round trip loses whoever authored an entity — and the reader then back-fills the FILE header's author and the read clock, which is fabricated attribution wearing the shape of the real thing.

      Every field carried here is written once, when the entity is created, and never re-stamped — lastEditedBy / lastEditedAt included (only promoteEntityType writes them, on the new entity). That is load-bearing, not incidental: a field re-stamped on each edit would make this attribute change whenever anything else on the entity does, putting it in every minimal layer and handing the merge engine a component that conflicts on every concurrent edit. If a per-edit stamp is ever wanted, give it its own key rather than adding it here.