UNPKG

@ndn/packet

Version:

NDNts: Network Layer Packets

95 lines (94 loc) 3.35 kB
import { Decoder, Encoder } from "@ndn/tlv"; import { Component, type ComponentLike } from "./component.js"; import type { NamingConvention } from "./convention.js"; /** Name or Name URI. */ export type NameLike = Name | string; /** * Name. * * @remarks * This type is immutable. */ export declare class Name { static decodeFrom(decoder: Decoder): Name; /** * Create Name from Name or Name URI. * * @remarks * This is more efficient than `new Name(input)` if input is already a Name. */ static from(input: NameLike): Name; /** Create empty name, or copy from other name, or parse from URI. */ constructor(input?: NameLike); /** Parse from URI, with specific component parser. */ constructor(uri: string, parseComponent?: (input: string) => Component); /** Construct from TLV-VALUE. */ constructor(value: Uint8Array); /** Construct from components. */ constructor(comps: readonly ComponentLike[]); /** List of name components. */ readonly comps: readonly Component[]; private readonly valueEncoderBufSize?; private value_?; private uri_?; private hex_?; /** Number of name components. */ get length(): number; /** Name TLV-VALUE. */ get value(): Uint8Array; /** Name TLV-VALUE hexadecimal representation, good for map keys. */ get valueHex(): string; /** * Retrieve i-th component. * @param i - Component index. Negative number counts from the end. * @returns i-th component, or `undefined` if it does not exist. */ get(i: number): Component | undefined; /** * Retrieve i-th component. * @param i - Component index. Negative number counts from the end. * @returns i-th component. * * @throws RangeError * Thrown if i-th component does not exist. */ at(i: number): Component; /** Get URI string. */ toString(): string; /** Get sub name `[begin,end)`. */ slice(begin?: number, end?: number): Name; /** Get prefix of `n` components. */ getPrefix(n: number): Name; /** Append a component from naming convention. */ append<A>(convention: NamingConvention<A, unknown>, v: A): Name; /** Append suffix with one or more components. */ append(...suffix: readonly ComponentLike[]): Name; /** Return a copy of Name with i-th component replaced with `comp`. */ replaceAt(i: number, comp: ComponentLike): Name; /** Compare with other name. */ compare(other: NameLike): Name.CompareResult; /** Determine if this name equals other. */ equals(other: NameLike): boolean; /** Determine if this name is a prefix of other. */ isPrefixOf(other: NameLike): boolean; encodeTo(encoder: Encoder): void; } export declare namespace Name { /** Determine if obj is Name or Name URI. */ function isNameLike(obj: any): obj is NameLike; /** Name compare result. */ enum CompareResult { /** lhs is less than, but not a prefix of rhs */ LT = -2, /** lhs is a prefix of rhs */ LPREFIX = -1, /** lhs and rhs are equal */ EQUAL = 0, /** rhs is a prefix of lhs */ RPREFIX = 1, /** rhs is less than, but not a prefix of lhs */ GT = 2 } /** Compare two names. */ function compare(lhs: Name, rhs: Name): CompareResult; }