Serialize to a frozen buffer: tuple (namespace) followed by length‑prefixed name bytes.
Consumers needing raw bytes should call .toUint8Array()
on the returned FrozenByteBuffer.
Human-readable representation: \<namespace path joined by '/'\>:\<name as lowercase hex\>
.
If the underlying Tuple exposes toUtf8Path
, it's used; otherwise the raw fields are joined.
This is lossy only in the sense that name bytes are hex encoded; round-tripping requires serialization.
Static
deserializeParse a serialized full track name. Performs the same validations as FullTrackName.tryNew. The provided buffer's read cursor advances accordingly.
:TrackNameError if constraints are violated.
Static
tryConstruct a validated full track name.
Validation steps:
:TrackNameError on any constraint violation.
Fully-qualified track identifier = hierarchical namespace (tuple) + leaf name bytes.
Constraints enforced (throws TrackNameError):
Namespace input may be:
string
path with segments separated by/
(converted via Tuple.fromUtf8Path). Empty segments are preserved except leading/trailing slashes are treated as empty fields and will be rejected by the length check if result is 0.Name input may be:
Uint8Array
(used directly)Instances are created via FullTrackName.tryNew (validates) or FullTrackName.deserialize. Use FullTrackName.serialize for wire encoding and FullTrackName.toString for a human friendly diagnostic format:
namespace/segments:hexname
(name rendered as lowercase hex, no 0x prefix).The string form is intended for logs/debug only; do not parse it for protocol operations.