{
  "version": 3,
  "sources": ["../../../src/array-to-hex.ts", "../../../src/array.ts", "../../../src/binder.ts", "../../../src/bitfield.ts", "../../../src/callback-collection.ts", "../../../src/callback.ts", "../../../src/case.ts", "../../../src/chunk-array.ts", "../../../src/circular-buffer.ts", "../../../src/clear-undefined.ts", "../../../src/complex.ts", "../../../src/deep.ts", "../../../src/defer-function.ts", "../../../src/explicit-resource-management-polyfill.ts", "../../../src/defer.ts", "../../../src/entry.ts", "../../../src/first-two-chars.ts", "../../../src/for-each-async.ts", "../../../src/human-hash.ts", "../../../src/map.ts", "../../../src/instance-id.ts", "../../../src/interval.ts", "../../../src/join-tables.ts", "../../../src/json.ts", "../../../src/uint8array.ts", "../../../src/map-values.ts", "../../../src/object.ts", "../../../src/order-keys.ts", "../../../src/order.ts", "../../../src/pick.ts", "../../../src/platform.ts", "../../../src/position.ts", "../../../src/random.ts", "../../../src/range.ts", "../../../src/reducers.ts", "../../../src/remove-undefined-keys.ts", "../../../src/safe-await.ts", "../../../src/safe-instanceof.ts", "../../../src/safe-parse.ts", "../../../src/sliding-window-summary.ts", "../../../src/sort.ts", "../../../src/string.ts", "../../../src/sum.ts", "../../../src/throw-unhandled-error.ts", "../../../src/to-fallback.ts", "../../../src/tracer.ts", "../../../src/tree.ts", "../../../src/types.ts", "../../../src/weak.ts", "../../../src/assume.ts"],
  "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\n// https://stackoverflow.com/a/59416332\n\n// Precomputed octet list.\nconst byteToHex: string[] = [];\nfor (let n = 0; n <= 0xff; ++n) {\n  const hexOctet = n.toString(16).padStart(2, '0');\n  byteToHex.push(hexOctet);\n}\n\nexport const arrayToHex = (buf: ArrayBufferLike) => {\n  const buff = new Uint8Array(buf);\n  const hexOctets = []; // new Array(buff.length) is even faster (preallocates necessary array size), then use hexOctets[i] instead of .push()\n\n  for (let i = 0; i < buff.length; ++i) {\n    hexOctets.push(byteToHex[buff[i]]);\n  }\n\n  return hexOctets.join('');\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nexport type Comparator<A, B = A> = (a: A, b: B) => boolean;\n\nexport type DiffResult<A, B = A> = {\n  added: B[];\n  updated: B[];\n  removed: A[];\n};\n\n/**\n * Compute diff between two arrays.\n * @param previous\n * @param next\n * @param comparator\n */\n// TODO(burdon): Factor out.\nexport const diff = <A, B = A>(\n  previous: readonly A[],\n  next: readonly B[],\n  comparator: Comparator<A, B>,\n): DiffResult<A, B> => {\n  const remaining = [...previous];\n  const result: DiffResult<A, B> = {\n    added: [],\n    updated: [],\n    removed: remaining,\n  };\n\n  // TODO(burdon): Mark and sweep.\n  for (const object of next) {\n    const index = remaining.findIndex((item) => comparator(item, object));\n    if (index === -1) {\n      result.added.push(object);\n    } else {\n      result.updated.push(object);\n      remaining.splice(index, 1);\n    }\n  }\n\n  return result;\n};\n\n// TODO(burdon): Factor out.\nexport const intersection = <A, B = A>(a: A[], b: B[], comparator: Comparator<A, B>): A[] =>\n  a.filter((a) => b.find((b) => comparator(a, b)) !== undefined);\n\n/**\n * Returns a new array with only the first instance of each unique item\n * based on a specified property.\n *\n * @typeParam T - The type of items in the input array.\n * @param array - The array to filter for distinct items.\n * @param key - The property key to determine uniqueness for each item.\n * @returns A new array with only distinct items based on the specified property.\n */\nexport const distinctBy = <T, K>(array: T[], selector: (item: T) => K): T[] => {\n  const seenKeys = new Set<K>();\n  return array.filter((item) => {\n    const key = selector(item);\n\n    if (seenKeys.has(key)) {\n      return false;\n    }\n\n    seenKeys.add(key);\n    return true;\n  });\n};\n\n/**\n * Remove elements from array.\n * @param array\n * @param test\n * @returns removed elements.\n */\nexport const removeBy = <T>(array: T[], test: (element: T, index: number) => boolean): T[] => {\n  const removed: T[] = [];\n  for (let i = array.length - 1; i >= 0; i--) {\n    if (test(array[i], i)) {\n      removed.push(...array.splice(i, 1));\n    }\n  }\n\n  return removed;\n};\n\n/**\n * Splits an array based on a type guard predicate function.\n * Infers the output tuple types from the guard function.\n */\nexport const partition = <T>(array: T[], guard: (item: T, index: number, array: T[]) => boolean): [T[], T[]] => {\n  return array.reduce<[T[], T[]]>(\n    ([accepted, rejected], item, index, array) =>\n      guard(item, index, array) ? [[...accepted, item], rejected] : [accepted, [...rejected, item]],\n    [[], []],\n  );\n};\n\n/**\n * Returns elements that exist in all provided arrays based on a selector function.\n *\n * @param arrays - Arrays to intersect.\n * @param selector - Function to extract the comparison value from each element.\n * @returns Array containing elements from the first array that exist in all other arrays.\n */\nexport const intersectBy = <T, K>(arrays: T[][], selector: (item: T) => K): T[] => {\n  if (arrays.length === 0) {\n    return [];\n  }\n\n  if (arrays.length === 1) {\n    return [...arrays[0]];\n  }\n\n  const [first, ...rest] = arrays;\n\n  // Create lookup maps for all other arrays.\n  const lookups = rest.map((array) => {\n    const map = new Map<K, T>();\n    for (const item of array) {\n      map.set(selector(item), item);\n    }\n    return map;\n  });\n\n  // Keep items from first array that exist in all other arrays.\n  return first.filter((item) => {\n    const key = selector(item);\n    return lookups.every((lookup) => lookup.has(key));\n  });\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport util from 'node:util';\n\n/**\n * Function binder replaces pify.\n */\n// TODO(burdon): Replace pify everywhere.\nexport const createBinder = (obj: any) => ({\n  fn: (fn: Function) => fn.bind(obj),\n  async: (fn: Function) => util.promisify(fn.bind(obj)),\n});\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { invariant } from '@dxos/invariant';\n\n/**\n * Bitfield encodes indices from MSB to LSB.\n * Index 0 is the MSB of the first byte.\n *\n *\n * #0       #1       #2       #3\n * 01010101 11110000 00001111 01010101\n * ^      ^\n * MSB    LSB\n */\nexport class BitField {\n  static get(data: Uint8Array, idx: number): boolean {\n    const bit = (data[idx >> 3] >> (7 - (idx % 8))) & 0x1;\n    return !!bit;\n  }\n\n  static set(data: Uint8Array, idx: number, value: boolean): void {\n    if (value) {\n      data[idx >> 3] = data[idx >> 3] | (1 << (7 - (idx % 8)));\n    } else {\n      data[idx >> 3] = data[idx >> 3] & ~(1 << (7 - (idx % 8)));\n    }\n  }\n\n  /**\n   * [start; end)\n   */\n  static count(data: Uint8Array, begin: number, end: number): number {\n    let count = 0;\n    for (let i = begin; i < end; i++) {\n      const bit = (data[i >> 3] >> (7 - (i % 8))) & 0x1;\n      count += bit;\n    }\n    return count;\n  }\n\n  static invert(data: Uint8Array): Uint8Array {\n    const result = new Uint8Array(data.length);\n    for (let i = 0; i < data.length; i++) {\n      result[i] = ~data[i];\n    }\n    return result;\n  }\n\n  static and(first: Uint8Array, second: Uint8Array): Uint8Array {\n    invariant(first.length === second.length, 'Bitfields must be of the same length');\n    const result = new Uint8Array(first.length);\n    for (let i = 0; i < first.length; i++) {\n      result[i] = first[i] & second[i];\n    }\n    return result;\n  }\n\n  static findIndexes(data: Uint8Array, opts: { start?: number; end?: number; value?: boolean } = {}): number[] {\n    const { start = 0, end = data.length * 8, value = true } = opts;\n\n    const result = [];\n\n    for (let i = start; i < end; i++) {\n      if (BitField.get(data, i) === value) {\n        result.push(i);\n      }\n    }\n    return result;\n  }\n\n  static ones(count: number): Uint8Array {\n    const res = new Uint8Array(Math.ceil(Math.ceil(count) / 8)).fill(0xff);\n\n    // Note: We need to calculate last byte of bitfield.\n    const bitInLastByte = Math.ceil(count % 8);\n    res[res.length - 1] = 0xff << (8 - bitInLastByte);\n\n    return res;\n  }\n\n  static zeros(count: number): Uint8Array {\n    return new Uint8Array(Math.ceil(Math.ceil(count) / 8)).fill(0);\n  }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\n/**\n * A collection of async functions.\n */\nexport class CallbackCollection<F extends (...args: any[]) => Promise<any>> {\n  #callbacks: F[] = [];\n\n  append(callback: F): void {\n    this.#callbacks.push(callback);\n  }\n\n  prepend(callback: F): void {\n    this.#callbacks.unshift(callback);\n  }\n\n  remove(callback: F): void {\n    this.#callbacks = this.#callbacks.filter((c) => c !== callback);\n  }\n\n  callParallel(...args: Parameters<F>): Promise<Awaited<ReturnType<F>>[]> {\n    return Promise.all(this.#callbacks.map((callback) => callback(...args)));\n  }\n\n  async callSerial(...args: Parameters<F>): Promise<Awaited<ReturnType<F>>[]> {\n    const results: Awaited<ReturnType<F>>[] = [];\n    for (const callback of this.#callbacks) {\n      results.push(await callback(...args));\n    }\n    return results;\n  }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { invariant } from '@dxos/invariant';\n\n/**\n * Represents a callback that can be set once.\n *\n * Common usage is dependency injection.\n * In contrast to events, callbacks can only have one handler,\n * are executed synchronously,\n * and can return results.\n */\n// TODO(burdon): Move to @dxos/async.\nexport class Callback<T extends (...args: any[]) => any> {\n  private _callback: T | undefined;\n\n  public call(...args: Parameters<T>): ReturnType<T> {\n    invariant(this._callback, 'Callback not set');\n    return this._callback(...args);\n  }\n\n  public callIfSet(...args: Parameters<T>): ReturnType<T> | undefined {\n    return this._callback?.(...args);\n  }\n\n  public set(callback: T): void {\n    invariant(!this._callback, 'Callback already set');\n    this._callback = callback;\n  }\n\n  public isSet(): boolean {\n    return !!this._callback;\n  }\n}\n\nexport type SetCallbacks<T> = { handlers: Set<T> };\n\n/**\n * Create a fan-out callback handler.\n * NOTE: Methods cannot return values.\n */\nexport const createSetDispatch = <T extends {}>({ handlers }: SetCallbacks<T>) => {\n  type Obj = { [i: string | symbol]: any };\n  return new Proxy<any>(\n    {\n      handlers,\n    },\n    {\n      get: (target: Obj, prop) => {\n        return (...args: any[]) => {\n          handlers.forEach((handler: Obj) => {\n            const method = handler[prop];\n            if (method) {\n              method.apply(handler, args);\n            }\n          });\n        };\n      },\n    },\n  );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nconst LOW_DASH = '_'.codePointAt(0)!;\nconst HI_DASH = '-'.codePointAt(0)!;\nconst SMALL_A = 'a'.codePointAt(0)!;\nconst CAPITAL_A = 'A'.codePointAt(0)!;\nconst SMALL_Z = 'z'.codePointAt(0)!;\nconst CAPITAL_Z = 'Z'.codePointAt(0)!;\n\nconst isLower = (char: number) => char >= SMALL_A && char <= SMALL_Z;\n\nconst isUpper = (char: number) => char >= CAPITAL_A && char <= CAPITAL_Z;\n\nconst toLower = (char: number) => char + 0x20;\n\n/**\n * NOTE: Removed `xcase` due to CF dependency conflicts.\n */\nconst changeCase = (str: string, delim: number) => {\n  const firstChar = str.charCodeAt(0);\n  if (!isLower(firstChar)) {\n    return str;\n  }\n\n  const length = str.length;\n  let changed = false;\n  const out: number[] = [];\n  for (let i = 0; i < length; ++i) {\n    const c = str.charCodeAt(i);\n    if (isUpper(c)) {\n      out.push(delim);\n      out.push(toLower(c));\n      changed = true;\n    } else {\n      out.push(c);\n    }\n  }\n\n  return changed ? String.fromCharCode.apply(undefined, out) : str;\n};\n\nexport const decamelize = (str: string) => changeCase(str, LOW_DASH);\nexport const hyphenize = (str: string) => changeCase(str, HI_DASH);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nexport const chunkArray = <T>(array: T[], size: number): T[][] => {\n  const result = [];\n  for (let i = 0; i < array.length; i += size) {\n    result.push(array.slice(i, i + size));\n  }\n  return result;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { invariant } from '@dxos/invariant';\n\nexport class CircularBuffer<T> {\n  private readonly _buffer: T[];\n  private _nextIndex = 0;\n  private _elementCount = 0;\n\n  constructor(size: number) {\n    invariant(size >= 1);\n    this._buffer = new Array(size);\n  }\n\n  public push(element: T): T | undefined {\n    const evicted = this._elementCount === this._buffer.length ? this._buffer[this._nextIndex] : undefined;\n    this._buffer[this._nextIndex] = element;\n    this._nextIndex = (this._nextIndex + 1) % this._buffer.length;\n    this._elementCount = Math.min(this._buffer.length, this._elementCount + 1);\n    return evicted;\n  }\n\n  public get elementCount() {\n    return this._elementCount;\n  }\n\n  public getLast(): T | undefined {\n    if (this._elementCount === 0) {\n      return undefined;\n    }\n    if (this._nextIndex === 0) {\n      return this._buffer[this._buffer.length - 1];\n    }\n    return this._buffer[this._nextIndex - 1];\n  }\n\n  [Symbol.iterator](): IterableIterator<T> {\n    return this.values();\n  }\n\n  public *values(): IterableIterator<T> {\n    if (this._elementCount === 0) {\n      return;\n    }\n    if (this._elementCount < this._buffer.length) {\n      for (let i = 0; i < this._elementCount; i++) {\n        yield this._buffer[i];\n      }\n      return;\n    }\n    for (let i = this._nextIndex; i < this._buffer.length; i++) {\n      yield this._buffer[i];\n    }\n    for (let i = 0; i < this._nextIndex; i++) {\n      yield this._buffer[i];\n    }\n  }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\n/**\n * Remove undefined values from an object.\n */\nexport const clearUndefined = <O extends {}>(obj: O): O => {\n  for (const key of [...Object.getOwnPropertyNames(obj), ...Object.getOwnPropertySymbols(obj)]) {\n    if (obj[key as keyof O] === undefined) {\n      delete obj[key as keyof O];\n    }\n  }\n  return obj;\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { inspect } from 'node:util';\n\nimport { inspectObject, raise } from '@dxos/debug';\n\nexport type Primitive = string | number | boolean | null | undefined;\n\nexport type PrimitiveProjection<T> = (value: T) => Primitive;\n\nconst MAX_SERIALIZATION_LENGTH = 10;\n\n/**\n * A set implementation that can hold complex values (like Buffer).\n *\n * The user must provide a projection function which returns a primitive\n * representation of the complex value. This function must be 1-to-1 mapping.\n *\n * Look at `../complex.test.ts` for usage examples.\n */\nexport class ComplexSet<T> implements Set<T> {\n  private readonly _values = new Map<Primitive, T>();\n\n  // prettier-ignore\n  constructor(\n    private readonly _projection: PrimitiveProjection<T>,\n    values?: Iterable<T> | null,\n  ) {\n    if (values) {\n      for (const value of values) {\n        this.add(value);\n      }\n    }\n  }\n\n  toString(): string {\n    return inspectObject(this);\n  }\n\n  toJSON(): T[] | { size: number } {\n    return this._values.size > MAX_SERIALIZATION_LENGTH\n      ? { size: this._values.size }\n      : Array.from(this._values.values());\n  }\n\n  [inspect.custom](): string {\n    return inspectObject(this);\n  }\n\n  add(value: T): this {\n    this._values.set(this._projection(value), value);\n    return this;\n  }\n\n  clear(): void {\n    this._values.clear();\n  }\n\n  delete(value: T): boolean {\n    return this._values.delete(this._projection(value));\n  }\n\n  forEach(callbackfn: (value: T, value2: T, set: Set<T>) => void, thisArg?: any): void {\n    if (thisArg) {\n      callbackfn = callbackfn.bind(thisArg);\n    }\n\n    this._values.forEach((value) => callbackfn(value, value, this));\n  }\n\n  has(value: T): boolean {\n    return this._values.has(this._projection(value));\n  }\n\n  get size(): number {\n    return this._values.size;\n  }\n\n  [Symbol.iterator](): SetIterator<T> {\n    return this._values.values();\n  }\n\n  *entries(): SetIterator<[T, T]> {\n    for (const value of this._values.values()) {\n      yield [value, value];\n    }\n  }\n\n  keys(): SetIterator<T> {\n    return this[Symbol.iterator]();\n  }\n\n  values(): SetIterator<T> {\n    return this[Symbol.iterator]();\n  }\n\n  get [Symbol.toStringTag](): string {\n    return 'ComplexSet';\n  }\n\n  union<U>(other: ReadonlySetLike<U>): Set<T | U> {\n    throw new Error('Method not implemented.');\n  }\n\n  intersection<U>(other: ReadonlySetLike<U>): Set<T & U> {\n    throw new Error('Method not implemented.');\n  }\n\n  difference<U>(other: ReadonlySetLike<U>): Set<T> {\n    throw new Error('Method not implemented.');\n  }\n\n  symmetricDifference<U>(other: ReadonlySetLike<U>): Set<T | U> {\n    throw new Error('Method not implemented.');\n  }\n\n  isSubsetOf(other: ReadonlySetLike<unknown>): boolean {\n    throw new Error('Method not implemented.');\n  }\n\n  isSupersetOf(other: ReadonlySetLike<unknown>): boolean {\n    throw new Error('Method not implemented.');\n  }\n\n  isDisjointFrom(other: ReadonlySetLike<unknown>): boolean {\n    throw new Error('Method not implemented.');\n  }\n}\n\nexport type ComplexSetConstructor<T> = new (values?: Iterable<T> | null) => ComplexSet<T>;\n\n/**\n * Create a subclass of ComplexSet with predefined projection function.\n */\nexport const makeSet = <T>(projection: PrimitiveProjection<T>): ComplexSetConstructor<T> => {\n  return class BoundComplexSet extends ComplexSet<T> {\n    constructor(values?: Iterable<T> | null) {\n      super(projection, values);\n    }\n  };\n};\n\n/**\n * A map implementation that can hold complex values (like Buffer) as keys.\n * The user must provide a projection function for map keys which returns a primitive\n * representation of the complex value. This function must be 1-to-1 mapping.\n * Look at `../complex.test.ts` for usage examples.\n */\nexport class ComplexMap<K, V> implements Map<K, V> {\n  private readonly _keys = new Map<Primitive, K>();\n  private readonly _values = new Map<Primitive, V>();\n\n  // prettier-ignore\n  constructor(\n    private readonly _keyProjection: PrimitiveProjection<K>,\n    entries?: readonly (readonly [K, V])[] | null,\n  ) {\n    if (entries) {\n      for (const [key, value] of entries) {\n        this.set(key, value);\n      }\n    }\n  }\n\n  toString(): string {\n    return inspectObject(this);\n  }\n\n  toJSON(): V[] | { size: number } {\n    return this._values.size > MAX_SERIALIZATION_LENGTH\n      ? { size: this._values.size }\n      : Array.from(this._values.values());\n  }\n\n  [inspect.custom](): string {\n    return inspectObject(this);\n  }\n\n  clear(): void {\n    this._keys.clear();\n    this._values.clear();\n  }\n\n  delete(key: K): boolean {\n    const keyDeleted = this._keys.delete(this._keyProjection(key));\n    const valueDeleted = this._values.delete(this._keyProjection(key));\n    return keyDeleted || valueDeleted;\n  }\n\n  forEach(callbackfn: (value: V, key: K, map: Map<K, V>) => void, thisArg?: any): void {\n    if (thisArg) {\n      callbackfn = callbackfn.bind(thisArg);\n    }\n\n    this._keys.forEach((key, primitive) =>\n      callbackfn(this._values.get(primitive) ?? raise(new Error('Map corrupted.')), key, this),\n    );\n  }\n\n  get(key: K): V | undefined {\n    return this._values.get(this._keyProjection(key));\n  }\n\n  has(key: K): boolean {\n    return this._keys.has(this._keyProjection(key));\n  }\n\n  set(key: K, value: V): this {\n    const primitive = this._keyProjection(key);\n    this._keys.set(primitive, key);\n    this._values.set(primitive, value);\n    return this;\n  }\n\n  get size(): number {\n    return this._keys.size;\n  }\n\n  *[Symbol.iterator](): SetIterator<[K, V]> {\n    for (const [primitive, key] of this._keys) {\n      const value = this._values.get(primitive) ?? raise(new Error('Map corrupted.'));\n      yield [key, value];\n    }\n  }\n\n  entries(): SetIterator<[K, V]> {\n    return this[Symbol.iterator]();\n  }\n\n  keys(): SetIterator<K> {\n    return this._keys.values();\n  }\n\n  values(): SetIterator<V> {\n    return this._values.values();\n  }\n\n  mapValues<R>(mapper: (v: V, k: K) => R): ComplexMap<K, R> {\n    return new ComplexMap(\n      this._keyProjection,\n      [...this.entries()].map(([key, value]) => [key, mapper(value, key)]),\n    );\n  }\n\n  get [Symbol.toStringTag](): string {\n    return 'ComplexMap';\n  }\n}\n\nexport type ComplexMapConstructor<K> = new <V>(entries?: readonly (readonly [K, V])[] | null) => ComplexMap<K, V>;\n\n/**\n * Create a subclass of ComplexMap with predefined key projection function.\n */\nexport const makeMap = <K>(keyProjection: PrimitiveProjection<K>): ComplexMapConstructor<K> =>\n  class BoundComplexMap<V> extends ComplexMap<K, V> {\n    constructor(entries?: readonly (readonly [K, V])[] | null) {\n      super(keyProjection, entries);\n    }\n  };\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport get from 'lodash.get';\nimport set from 'lodash.set';\n\nimport { invariant } from '@dxos/invariant';\n\n// TODO(burdon): Re-export most common utils? (isEqual, defaultsDeep, merge, omit, pick, etc.)\nexport { get, set };\n\n/**\n * Initialize a deeply nested object.\n * @returns The value of the prop after assignment.\n */\nexport const setDeep = <T>(obj: any, path: readonly (string | number)[], value: T): T => {\n  invariant(path.length > 0);\n  let parent = obj;\n  for (const key of path.slice(0, -1)) {\n    if (parent[key] === undefined) {\n      const isArrayIndex = !isNaN(Number(key));\n      parent[key] = isArrayIndex ? [] : {};\n    }\n    parent = parent[key];\n  }\n\n  parent[path.at(-1)!] = value;\n  return obj;\n};\n\n/**\n * Gets a value from a deeply nested object.\n * @returns The value of the prop if it exists, otherwise undefined.\n */\nexport const getDeep = <T>(obj: any, path: readonly (string | number)[]): T | undefined => {\n  let parent = obj;\n  for (const key of path) {\n    parent = parent?.[key];\n  }\n\n  return parent;\n};\n", "/**\n * Wraps a function provider in a function that will defer the execution of the provided function.\n *\n * Example:\n *\n * ```typescript\n * const fn = deferFunction(() => impl);\n *\n * // Impl can be defined after the usage.\n * const impl = () => {\n *  console.log('Hello World!')\n * }\n * ```\n */\n//\n// Copyright 2022 DXOS.org\n//\n\nexport const deferFunction =\n  <T extends (...args: any[]) => any>(fnProvider: () => T) =>\n  (...args: Parameters<T>): ReturnType<T> =>\n    fnProvider()(...args);\n", "//\n// Copyright 2023 DXOS.org\n//\n\n// https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-2.html\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nSymbol.dispose ??= Symbol('Symbol.dispose');\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nSymbol.asyncDispose ??= Symbol('Symbol.asyncDispose');\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport './explicit-resource-management-polyfill';\n\n/**\n * Run function on scope exit. Go style.\n *\n * @example\n * ```ts\n * {\n *   using _ = defer(() => console.log('exiting'));\n *\n *   ...\n * }\n */\nexport const defer = (fn: () => void): Disposable => new DeferGuard(fn);\n\nclass DeferGuard {\n  /**\n   * @internal\n   */\n  constructor(private readonly _fn: () => void) {}\n\n  [Symbol.dispose](): void {\n    const result = this._fn();\n    if ((result as any) instanceof Promise) {\n      throw new Error('Async functions in defer are not supported. Use deferAsync instead.');\n    }\n  }\n}\n\n/**\n * Run async function on scope exit. Go style.\n *\n * @example\n * ```ts\n * {\n *   await using _ = deferAsync(async () => console.log('exiting'));\n *\n *   ...\n * }\n */\nexport const deferAsync = (fn: () => Promise<void>): AsyncDisposable => new DeferAsyncGuard(fn);\n\nclass DeferAsyncGuard implements AsyncDisposable {\n  /**\n   * @internal\n   */\n  constructor(private readonly _fn: () => Promise<void>) {}\n\n  async [Symbol.asyncDispose](): Promise<void> {\n    await this._fn();\n  }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\n/**\n * Inspired by https://doc.rust-lang.org/std/collections/struct.HashMap.html#method.entry\n */\nexport const entry = <K, V>(map: Map<K, V>, key: K): MapEntry<K, V, undefined> => new MapEntry(map, key);\n\nexport class MapEntry<K, V, U> {\n  /**\n   * @internal\n   */\n  // prettier-ignore\n  constructor(\n    private readonly _map: Map<K, V>,\n    private readonly _key: K,\n  ) {}\n\n  get key(): K {\n    return this._key;\n  }\n\n  get value(): V | U {\n    return this._map.get(this._key) as V | U;\n  }\n\n  orInsert(value: V): MapEntry<K, V, never> {\n    if (!this._map.has(this._key)) {\n      this._map.set(this._key, value);\n    }\n    return this as any;\n  }\n\n  deep<K1, V1>(this: MapEntry<K, Map<K1, V1>, Map<K1, V1>>, key: K1): MapEntry<K1, V1, undefined> {\n    return entry(this.value, key);\n  }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\n// Regular expression to match renderable characters\n// Excludes control characters, combining marks, and other non-renderable characters. Also excludes punctuation.\nconst renderableCharRegex =\n  /^(?![\\p{Control}\\p{Mark}\\p{Separator}\\p{Surrogate}\\p{Unassigned}\\p{P}])[\\p{L}\\p{N}\\p{S}\\p{Emoji}]$/u;\n\n/**\n * Returns the first two renderable characters from a string that are separated by non-word characters.\n * Handles Unicode characters correctly.\n *\n * @param {string} label - The input string to process\n * @returns {[string, string]} Array containing the two characters, or empty strings if not found\n */\nexport const getFirstTwoRenderableChars = (label: string) => {\n  // Convert string to array of Unicode characters\n  const characters = Array.from(label);\n\n  // Keep track of found renderable characters\n  const result = ['', ''];\n  let foundFirst = false;\n\n  for (let i = 0; i < characters.length; i++) {\n    const char = characters[i];\n\n    if (renderableCharRegex.test(char)) {\n      if (!foundFirst) {\n        result[0] = char;\n        foundFirst = true;\n      } else {\n        // Check if there's at least one non-word character between the first and current char\n        const textBetween = characters.slice(result[0].length, i).join('');\n        if (/[^\\p{L}\\p{N}_]/u.test(textBetween)) {\n          result[1] = char;\n          break;\n        }\n      }\n    }\n  }\n\n  return result;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nexport const forEachAsync = <T>(items: T[], fn: (item: T, idx: number) => Promise<void>) => Promise.all(items.map(fn));\n", "//\n// Copyright 2021 DXOS.org\n//\n\nimport { PublicKey, type PublicKeyLike } from '@dxos/keys';\n\n// From https://github.com/SEBv15/humanhash/blob/166c1a6f70d854fe6767cdd76be1237112d4eaf1/index.js\n\nconst DEFAULT_WORDLIST = [\n  'ack',\n  'alabama',\n  'alanine',\n  'alaska',\n  'alpha',\n  'angel',\n  'apart',\n  'april',\n  'arizona',\n  'arkansas',\n  'artist',\n  'asparagus',\n  'aspen',\n  'august',\n  'autumn',\n  'avocado',\n  'bacon',\n  'bakerloo',\n  'batman',\n  'beer',\n  'berlin',\n  'beryllium',\n  'black',\n  'blossom',\n  'blue',\n  'bluebird',\n  'bravo',\n  'bulldog',\n  'burger',\n  'butter',\n  'california',\n  'carbon',\n  'cardinal',\n  'carolina',\n  'carpet',\n  'cat',\n  'ceiling',\n  'charlie',\n  'chicken',\n  'coffee',\n  'cola',\n  'cold',\n  'colorado',\n  'comet',\n  'connecticut',\n  'crazy',\n  'cup',\n  'dakota',\n  'december',\n  'delaware',\n  'delta',\n  'diet',\n  'don',\n  'double',\n  'early',\n  'earth',\n  'east',\n  'echo',\n  'edward',\n  'eight',\n  'eighteen',\n  'eleven',\n  'emma',\n  'enemy',\n  'equal',\n  'failed',\n  'fanta',\n  'fifteen',\n  'fillet',\n  'finch',\n  'fish',\n  'five',\n  'fix',\n  'floor',\n  'florida',\n  'football',\n  'four',\n  'fourteen',\n  'foxtrot',\n  'freddie',\n  'friend',\n  'fruit',\n  'gee',\n  'georgia',\n  'glucose',\n  'golf',\n  'green',\n  'grey',\n  'hamper',\n  'happy',\n  'harry',\n  'hawaii',\n  'helium',\n  'high',\n  'hot',\n  'hotel',\n  'hydrogen',\n  'idaho',\n  'illinois',\n  'india',\n  'indigo',\n  'ink',\n  'iowa',\n  'island',\n  'item',\n  'jersey',\n  'jig',\n  'johnny',\n  'juliet',\n  'july',\n  'jupiter',\n  'kansas',\n  'kentucky',\n  'kilo',\n  'king',\n  'kitten',\n  'lactose',\n  'lake',\n  'lamp',\n  'lemon',\n  'leopard',\n  'lima',\n  'lion',\n  'lithium',\n  'london',\n  'louisiana',\n  'low',\n  'magazine',\n  'magnesium',\n  'maine',\n  'mango',\n  'march',\n  'mars',\n  'maryland',\n  'massachusetts',\n  'may',\n  'mexico',\n  'michigan',\n  'mike',\n  'minnesota',\n  'mirror',\n  'mississippi',\n  'missouri',\n  'mobile',\n  'mockingbird',\n  'monkey',\n  'montana',\n  'moon',\n  'mountain',\n  'muppet',\n  'music',\n  'nebraska',\n  'neptune',\n  'network',\n  'nevada',\n  'nine',\n  'nineteen',\n  'nitrogen',\n  'north',\n  'november',\n  'nuts',\n  'october',\n  'ohio',\n  'oklahoma',\n  'one',\n  'orange',\n  'oranges',\n  'oregon',\n  'oscar',\n  'oven',\n  'oxygen',\n  'papa',\n  'paris',\n  'pasta',\n  'pennsylvania',\n  'pip',\n  'pizza',\n  'pluto',\n  'potato',\n  'princess',\n  'purple',\n  'quebec',\n  'queen',\n  'quiet',\n  'red',\n  'river',\n  'robert',\n  'robin',\n  'romeo',\n  'rugby',\n  'sad',\n  'salami',\n  'saturn',\n  'september',\n  'seven',\n  'seventeen',\n  'shade',\n  'sierra',\n  'single',\n  'sink',\n  'six',\n  'sixteen',\n  'skylark',\n  'snake',\n  'social',\n  'sodium',\n  'solar',\n  'south',\n  'spaghetti',\n  'speaker',\n  'spring',\n  'stairway',\n  'steak',\n  'stream',\n  'summer',\n  'sweet',\n  'table',\n  'tango',\n  'ten',\n  'tennessee',\n  'tennis',\n  'texas',\n  'thirteen',\n  'three',\n  'timing',\n  'triple',\n  'twelve',\n  'twenty',\n  'two',\n  'uncle',\n  'undress',\n  'uniform',\n  'uranus',\n  'utah',\n  'vegan',\n  'venus',\n  'vermont',\n  'victor',\n  'video',\n  'violet',\n  'virginia',\n  'washington',\n  'west',\n  'whiskey',\n  'white',\n  'william',\n  'winner',\n  'winter',\n  'wisconsin',\n  'wolfram',\n  'wyoming',\n  'xray',\n  'yankee',\n  'yellow',\n  'zebra',\n  'zulu',\n];\n\n/**\n * humanhash: Human-readable representations of digests.\n */\nexport class HumanHasher {\n  /**\n   * Transforms hex digests to human-readable strings.\n   *\n   * The format of these strings will look something like:\n   * `victor-bacon-zulu-lima`. The output is obtained by compressing the input\n   * digest to a fixed number of bytes, then mapping those bytes to one of 256\n   * words. A default wordlist is provided, but you can override this if you\n   * prefer.\n   * As long as you use the same wordlist, the output will be consistent (i.e.\n   * the same digest will always render the same representation).\n   *\n   * @param wordlist A list of exactly 256 words to choose from\n   */\n  constructor(private readonly wordlist = DEFAULT_WORDLIST) {\n    if (wordlist.length !== 256) {\n      throw new Error('Wordlist must have exactly 256 items');\n    }\n    this.wordlist = wordlist;\n  }\n\n  /**\n   * Humanize a given hexadecimal digest.\n   *\n   * Change the number of words output by specifying `words`. Change the\n   * word separator with `separator`.\n   *\n   * @param hexdigest A string of hexadecimal characters to humanize\n   * @param words How many words to output (more = safer)\n   * @param separator The string used to seperate the words\n   */\n  humanize(hexdigest: string, words = 4, separator = '-'): string {\n    const pairs = hexdigest.match(/(..?)/g);\n    if (!pairs) {\n      throw new Error('');\n    }\n\n    const bytes = pairs.map((x) => parseInt(x, 16));\n    const compressed = this._compress(bytes, words);\n\n    return compressed.map((x) => this.wordlist[x]).join(separator);\n  }\n\n  /**\n   * Compress a list of byte values to a fixed target length.\n   *\n   * @param bytes A list of bytes (numbers from 0-254)\n   * @param target The number of bytes to return / compress to\n   */\n  _compress(bytes: number[], target: number): number[] {\n    const length = bytes.length;\n    if (target > length) {\n      throw new Error('Fewer input bytes than requested output');\n    }\n\n    // Calculate the segment size (divide and round down)\n    const segSize = (length / target) >> 0;\n\n    // Split 'bytes' array into 'target' number of segments.\n    const segments = [];\n    for (let i = 0; i < segSize * target; i += segSize) {\n      segments.push(bytes.slice(i, i + segSize));\n    }\n\n    // Catch any left-over bytes in the last segment.\n    segments[segments.length - 1] = segments[segments.length - 1].concat(bytes.slice(target * segSize));\n\n    const checksums = segments.map((x) => x.reduce((acc, curr) => acc ^ curr));\n    return checksums;\n  }\n}\n\nconst hasher = new HumanHasher();\n\nexport const humanize = (value: PublicKeyLike): string => {\n  if (value instanceof Buffer || value instanceof Uint8Array || value instanceof ArrayBuffer) {\n    value = PublicKey.stringify(value);\n  } else if (value instanceof PublicKey) {\n    value = value.toHex();\n  }\n\n  return hasher.humanize(value);\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\ninterface IMap<K, V> {\n  get(key: K): V | undefined;\n  set(key: K, value: V): this;\n}\n\n/**\n * Get or set map value.\n */\nexport const defaultMap = <K, V>(map: IMap<K, V>, key: K, def: V | (() => V)) => {\n  let value = map.get(key);\n  if (value === undefined) {\n    value = typeof def === 'function' ? (def as () => V)() : def;\n    map.set(key, value);\n  }\n\n  return value;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { defaultMap } from './map';\n\nconst symbol = Symbol.for('dxos.instance-contexts');\n\nconst instanceContexts = ((globalThis as any)[symbol] ??= new WeakMap<\n  any,\n  {\n    nextId: number;\n    instanceIds: WeakMap<any, number>;\n  }\n>());\n\n/**\n * Returns a unique instance id for a given object.\n * Ids are generated as incrementing numbers.\n * Ids are only unique within the scope of a given prototype.\n * Instances of different classes may have the same id.\n */\nexport const getPrototypeSpecificInstanceId = (instance: any): number => {\n  const prototype = Object.getPrototypeOf(instance);\n  const instanceCtx = defaultMap(instanceContexts as any, prototype, () => ({\n    nextId: 0,\n    instanceIds: new WeakMap(),\n  }));\n\n  let id = instanceCtx.instanceIds.get(instance);\n  if (id === undefined) {\n    id = instanceCtx.nextId++;\n    instanceCtx.instanceIds.set(instance, id);\n  }\n\n  return id;\n};\n\nexport const getDebugName = (instance: any): string => {\n  if (instance == null) {\n    return 'null';\n  }\n\n  const prototype = Object.getPrototypeOf(instance);\n  return `${prototype.constructor?.name ?? 'Object'}#${getPrototypeSpecificInstanceId(instance)}`;\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\n/**\n * Runs the callback in an exponentially increasing interval.\n * @returns Callback to clear the interval.\n */\nexport const exponentialBackoffInterval = (cb: () => void, initialInterval: number): (() => void) => {\n  let interval = initialInterval;\n  const repeat = () => {\n    cb();\n    interval *= 2;\n    timeoutId = setTimeout(repeat, interval);\n  };\n\n  let timeoutId = setTimeout(repeat, interval);\n  return () => clearTimeout(timeoutId);\n};\n", "/**\n * Joins two untyped tables on the given columns.\n * @param leftColumn The column to join on in the first table.\n * @param rightColumn The column to join on in the second table.\n */\n//\n// Copyright 2024 DXOS.org\n//\n\nexport const joinTables = (\n  leftColumn: string,\n  rightColumn: string,\n  left: Record<string, any>[],\n  right: Record<string, any>[],\n) => {\n  const map = new Map();\n  const used = new Set();\n  for (const row of right) {\n    map.set(row[rightColumn], row);\n  }\n\n  const result = [];\n  for (const row of left) {\n    const right = map.get(row[leftColumn]);\n    used.add(right);\n\n    result.push(Object.assign(right ?? {}, row));\n  }\n\n  // Add unmatched rows from the right table.\n  for (const row of right) {\n    if (!used.has(row)) {\n      result.push(row);\n    }\n  }\n\n  return result;\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { inspect } from 'node:util';\n\nimport { PublicKey } from '@dxos/keys';\n\nimport { humanize } from './human-hash';\nimport { arrayToBuffer } from './uint8array';\n\nexport type JsonValue = string | number | boolean | null | JsonValue[] | { [key: string]: JsonValue };\n\nconst MAX_DEPTH = 5;\nconst LOG_MAX_DEPTH = 7;\n\n/**\n * JSON.stringify replacer.\n */\nexport function jsonReplacer(this: any, key: string, value: any): any {\n  // TODO(burdon): Why is this represented as `{ type: 'Buffer', data }`.\n  if (value !== null && typeof value === 'object' && typeof value[inspect.custom] === 'function') {\n    return value[inspect.custom]();\n  }\n\n  if (value !== null && typeof value === 'object' && value.type === 'Buffer' && Array.isArray(value.data)) {\n    if (value.data.length === 32) {\n      const key = Buffer.from(value.data);\n      return `[${humanize(key)}]:[${PublicKey.stringify(key)}]`;\n    } else {\n      return Buffer.from(value.data).toString('hex');\n    }\n  }\n\n  // TODO(burdon): Option.\n  // code if (Array.isArray(value)) {\n  // code   return value.length;\n  // code } else {\n  return value;\n  // code }\n}\n\n/**\n * Recursively converts an object into a JSON-compatible object.\n */\nexport const jsonify = (value: any, depth = 0, visitedObjects = new WeakSet<any>()): any => {\n  if (depth > MAX_DEPTH) {\n    return null;\n  } else if (typeof value === 'function') {\n    return null;\n  } else if (typeof value === 'object' && value !== null) {\n    if (visitedObjects.has(value)) {\n      return null;\n    }\n    visitedObjects.add(value);\n\n    try {\n      if (value instanceof Uint8Array) {\n        return arrayToBuffer(value).toString('hex');\n      } else if (Array.isArray(value)) {\n        return value.map((x) => jsonify(x, depth + 1, visitedObjects));\n      } else if (typeof value.toJSON === 'function') {\n        return value.toJSON();\n      } else {\n        const res: any = {};\n        for (const key of Object.keys(value)) {\n          res[key] = jsonify(value[key], depth + 1, visitedObjects);\n        }\n        return res;\n      }\n    } finally {\n      visitedObjects.delete(value);\n    }\n  } else {\n    return value;\n  }\n};\n\n/**\n * Recursively converts an object into a JSON-compatible object appropriate for logging.\n */\n\n// TODO(nf): use util.inspect/[util.inspect.custom] instead?\nexport const jsonlogify = (value: any, depth = 0, visitedObjects = new WeakSet<any>()): any => {\n  if (depth > LOG_MAX_DEPTH) {\n    return null;\n  } else if (typeof value === 'function') {\n    return null;\n  } else if (typeof value === 'object' && value !== null) {\n    if (visitedObjects.has(value)) {\n      return null;\n    }\n    visitedObjects.add(value);\n\n    try {\n      if (value instanceof Uint8Array) {\n        return arrayToBuffer(value).toString('hex');\n      } else if (Array.isArray(value)) {\n        return value.map((x) => jsonlogify(x, depth + 1, visitedObjects));\n      } else if (typeof value.toJSONL === 'function') {\n        return value.toJSONL();\n      } else if (typeof value.toJSON === 'function') {\n        return value.toJSON();\n      } else {\n        const res: any = {};\n        for (const key of Object.keys(value)) {\n          res[key] = jsonlogify(value[key], depth + 1, visitedObjects);\n        }\n        return res;\n      }\n    } finally {\n      visitedObjects.delete(value);\n    }\n  } else {\n    return value;\n  }\n};\n\nexport type JsonKeyOptions = {\n  truncate?: boolean;\n  humanize?: boolean;\n};\n\nexport const jsonKeyReplacer =\n  (options: JsonKeyOptions = {}) =>\n  (key: string, value: any) => {\n    if (typeof value === 'string') {\n      const key = PublicKey.fromHex(value);\n      if (key.toHex() === value) {\n        // TODO(burdon): Remove humanize.\n        return options.humanize ? humanize(key) : options.truncate ? key.truncate() : key.toHex();\n      }\n    }\n\n    return value;\n  };\n", "//\n// Copyright 2021 DXOS.org\n//\n\nexport const arraysEqual = (a: Uint8Array, b: Uint8Array): boolean => {\n  if (a.length !== b.length) {\n    return false;\n  }\n\n  for (let i = 0; i < a.length; i++) {\n    if (a[i] !== b[i]) {\n      return false;\n    }\n  }\n\n  return true;\n};\n\n/**\n * Non-copying conversion of Uint8Array to Buffer.\n * The resulting buffer will share the same allocated memory as the Uint8Array.\n */\nexport const arrayToBuffer = (array: Uint8Array): Buffer => {\n  return Buffer.from(array.buffer, array.byteOffset, array.byteLength);\n};\n\n/**\n * Non-copying conversion of Buffer to Uint8Array.\n * The resulting Uint8Array will share the same allocated memory as the Buffer.\n */\nexport const bufferToArray = (buffer: Buffer): Uint8Array => {\n  return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n};\n\nexport const stringToArray = (string: string): Uint8Array => bufferToArray(Buffer.from(string, 'hex'));\n\nexport const arrayToString = (array: Uint8Array): string => arrayToBuffer(array).toString('hex');\n", "//\n// Copyright 2024 DXOS.org\n//\n\nexport const mapValues = <T, U>(obj: Record<string, T>, fn: (value: T, key: string) => U): Record<string, U> => {\n  const result: Record<string, U> = {};\n  Object.keys(obj).forEach((key) => {\n    result[key] = fn(obj[key], key);\n  });\n  return result;\n};\n\n/**\n * Recursively maps values traversing arrays and objects.\n * @param fn Function to apply to each value. Second argument is a function to recurse into the value.\n */\nexport const deepMapValues = (\n  value: any,\n  fn: (value: any, recurse: (value: any) => any, key: string | number | undefined) => any,\n): any => {\n  return new DeepMapper(fn).map(value);\n};\n\nclass DeepMapper {\n  private readonly _cyclic = new Map<any, any>();\n\n  constructor(\n    private readonly _fn: (value: any, recurse: (value: any) => any, key: string | number | undefined) => any,\n  ) {}\n\n  map(value: any): any {\n    return this._map(value, undefined);\n  }\n\n  private _map(value: any, key: string | number | undefined): any {\n    if (this._cyclic.has(value)) {\n      return this._cyclic.get(value);\n    }\n\n    return this._fn(value, this._recurse, key);\n  }\n\n  private _recurse = (value: any) => {\n    if (this._cyclic.has(value)) {\n      return this._cyclic.get(value);\n    }\n\n    if (Array.isArray(value)) {\n      const res = new Array(value.length);\n      this._cyclic.set(value, res);\n      for (let i = 0; i < value.length; i++) {\n        res[i] = this._map(value[i], i);\n      }\n      return res;\n    } else if (value !== null && typeof value === 'object') {\n      const res: any = {};\n      this._cyclic.set(value, res);\n      for (const key in value) {\n        res[key] = this._map(value[key], key);\n      }\n      return res;\n    } else {\n      return value;\n    }\n  };\n}\n\n/**\n * Recursively maps values traversing arrays and objects.\n * @param fn Function to apply to each value. Second argument is a function to recurse into the value.\n * Async version.\n */\nexport const deepMapValuesAsync = (\n  value: any,\n  fn: (value: any, recurse: (value: any) => Promise<any>, key: string | number | undefined) => Promise<any>,\n): Promise<any> => {\n  return new DeepMapperAsync(fn).map(value);\n};\n\nclass DeepMapperAsync {\n  private readonly _cyclic = new Map<any, any>();\n\n  constructor(\n    private readonly _fn: (\n      value: any,\n      recurse: (value: any) => Promise<any>,\n      key: string | number | undefined,\n    ) => Promise<any>,\n  ) {}\n\n  map(value: any): Promise<any> {\n    return this._map(value, undefined);\n  }\n\n  private _map(value: any, key: string | number | undefined): Promise<any> {\n    if (this._cyclic.has(value)) {\n      return this._cyclic.get(value);\n    }\n\n    return this._fn(value, this._recurse, key);\n  }\n\n  private _recurse = async (value: any) => {\n    if (this._cyclic.has(value)) {\n      return this._cyclic.get(value);\n    }\n\n    if (Array.isArray(value)) {\n      const res = new Array(value.length);\n      this._cyclic.set(value, res);\n      for (let i = 0; i < value.length; i++) {\n        res[i] = await this._map(value[i], i);\n      }\n      return res;\n    } else if (value !== null && typeof value === 'object') {\n      const res: any = {};\n      this._cyclic.set(value, res);\n      for (const key in value) {\n        res[key] = await this._map(value[key], key);\n      }\n      return res;\n    } else {\n      return value;\n    }\n  };\n}\n\n/**\n * Visits all values on an object or every item in an array.\n * No-op if the value is not an object or array.\n */\nexport const visitValues = (object: unknown, visitor: (value: unknown, key: string | number) => void) => {\n  if (Array.isArray(object)) {\n    object.forEach((item, index) => visitor(item, index));\n  } else if (typeof object === 'object' && object !== null) {\n    for (const [key, value] of Object.entries(object)) {\n      visitor(value, key);\n    }\n  }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nexport const keys = <R>(obj: R): (keyof R)[] => Object.keys(obj as any) as (keyof R)[];\n\nexport const entries = <R>(obj: R): [keyof R, R[keyof R]][] => Object.entries(obj as any) as [keyof R, any][];\n", "//\n// Copyright 2024 DXOS.org\n//\n\nexport const orderKeys = <O extends {}>(obj: O, order: (keyof O)[]): O => {\n  const ordered: Partial<O> = {};\n  for (const key of order) {\n    if (key in obj) {\n      ordered[key] = obj[key];\n    }\n  }\n  for (const key in obj) {\n    if (!(key in ordered)) {\n      ordered[key] = obj[key];\n    }\n  }\n  return ordered as O;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nexport type IdOrder = string[];\n\ntype ObjectOrderAccumulator<T> = { objects: T[]; ids: Set<string> };\n\n/**\n * Uses an array of string id’s to order a map of objects, returning an array of those objects. Objects not listed by\n * the array of id’s occur later in the resulting array of objects based on the map’s key order.\n * @param objectMap\n * @param order\n */\nexport const inferObjectOrder = <T = any>(objectMap: Record<string, T>, order: IdOrder = []): T[] => {\n  const orderedObjects = order.reduce(\n    (acc, id) => {\n      if (id in objectMap) {\n        acc.objects.push(objectMap[id]);\n        acc.ids.add(id);\n      }\n      return acc;\n    },\n    { objects: [], ids: new Set() } as ObjectOrderAccumulator<T>,\n  );\n  const { objects } = Object.keys(objectMap).reduce((acc, id) => {\n    if (!acc.ids.has(id)) {\n      acc.objects.push(objectMap[id]);\n    }\n    return acc;\n  }, orderedObjects);\n  return objects;\n};\n\n/**\n * Uses an array of string id’s to order a map of objects, returning a new map with the keys in the prescribed order.\n * Objects not listed by the array of id’s occur later in the resulting array of objects based on the map’s key order.\n * @param objectMap\n * @param order\n */\nexport const inferRecordOrder = <T = any>(objectMap: Record<string, T>, order: IdOrder = []): Record<string, T> => {\n  return Object.assign(\n    order\n      .filter((id) => id in objectMap)\n      .reduce((acc: Record<string, null>, id) => {\n        acc[id] = null;\n        return acc;\n      }, {}),\n    objectMap,\n  );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\n// Based on https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore?tab=readme-ov-file#_pick.\n\n/**\n * Creates an object composed of the object properties predicate returns truthy for.\n */\n\nexport const pick = <T extends object, K extends keyof T = keyof T>(obj: T, keys: K[]): Pick<T, K> => {\n  return keys.reduce(\n    (result, key) => {\n      if (obj && key in obj) {\n        result[key] = obj[key];\n      }\n      return result;\n    },\n    {} as Pick<T, K>,\n  );\n};\n\n/**\n * Creates an object composed of the object properties predicate returns truthy for.\n */\nexport const pickBy = (obj: Record<any, any>, predicate: (value: any) => boolean) => {\n  const result: Record<any, any> = {};\n  for (const key in obj) {\n    if (predicate(obj[key])) {\n      result[key] = obj[key];\n    }\n  }\n  return result;\n};\n\n/**\n * Omit given props.\n * @param obj\n * @param keys\n */\nexport const omit = <T extends object, K extends keyof T>(obj: T, keys: K[]): Omit<T, K> => {\n  const result = { ...obj };\n  keys.forEach((key) => {\n    delete result[key];\n  });\n  return result;\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\n// NOTE: `!=` is required.\nexport const isNode = () => typeof process !== 'undefined' && process.versions != null && process.versions.node != null;\n\n/* eslint-disable */\n\n// From https://stackoverflow.com/a/11381730/2804332.\nexport const mobileAndTabletCheck = () => {\n  let check = false;\n  ((a) => { if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0,4))) { check = true; } })(navigator.userAgent || navigator.vendor || (window as any).opera);\n  return check;\n};\n\n/* eslint-enable */\n\n// From https://stackoverflow.com/a/9039885\nexport const iosCheck = () => {\n  return (\n    ['iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'].includes(navigator.platform) ||\n    // iPad on iOS 13 detection\n    (navigator.userAgent.includes('Mac') && 'ontouchend' in document)\n  );\n};\n\n// From https://stackoverflow.com/a/23522755/2804332\nexport const safariCheck = () =>\n  typeof navigator !== 'undefined' && /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\n/**\n * Retrieve the host platform in a best-effort way with normalized output.\n */\n// From https://flaming.codes/posts/how-to-determine-os-in-browser.\nexport const getHostPlatform = () => {\n  if (!('navigator' in window)) {\n    return 'unknown';\n  }\n\n  // Use the modern 'web hints' provied by\n  // 'userAgentData' if available, else use\n  // the deprecated 'platform' as fallback.\n  const platform = ((navigator as any).userAgentData?.platform || navigator.platform)?.toLowerCase();\n  if (platform.startsWith('win')) {\n    return 'windows';\n  } else if (platform.startsWith('mac')) {\n    return 'macos';\n  } else if (platform.startsWith('ipad') || platform.startsWith('iphone') || platform.startsWith('ipod')) {\n    return 'ios';\n  } else if (platform.startsWith('linux')) {\n    return 'linux';\n  } else {\n    return 'unknown';\n  }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\n// TODO(burdon): This shouldn't be in this low-level util? Move to app-framework?\n\n/**\n * Determines priority order:\n * - `static` - Remain in natural order.\n * - `hoist` - Placed before `static`.\n * - `fallback` - Placed after `static`.\n */\n// TODO(wittjosiah): Change to 'static' | 'start' | 'end'.\nexport type Position = 'static' | 'hoist' | 'fallback';\n\n/**\n * Sorting function for sorting by position.\n */\nexport const byPosition = <T extends { position?: Position }>(\n  { position: a = 'static' }: T,\n  { position: b = 'static' }: T,\n) => {\n  if (a === b) {\n    return 0;\n  } else if (a === 'hoist' || b === 'fallback') {\n    return -1;\n  } else if (b === 'hoist' || a === 'fallback') {\n    return 1;\n  } else {\n    return 0;\n  }\n};\n", "//\n// Copyright 2021 DXOS.org\n//\n\n// TODO(burdon): Random class utility.\n// TODO(burdon): Make object { min, max }.\nexport const randomInt = (max: number, min = 0) => {\n  min = Math.ceil(min);\n  max = Math.floor(max);\n  return Math.floor(Math.random() * (max - min + 1)) + min;\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nexport const range: {\n  (n: number): number[];\n  <T>(n: number, mapper: RangeMapper<T>): T[];\n} = <T>(n: number = 0, mapper?: RangeMapper<T>) => {\n  const range = Array.from(Array(n).keys());\n  return mapper == null ? range : range.map(mapper);\n};\n\nexport const rangeFromTo: {\n  (from: number, to: number): number[];\n  <T>(from: number, to: number, mapper: RangeMapper<T>): T[];\n} = <T = number>(from: number, to: number, mapper?: RangeMapper<T>) => {\n  return mapper == null ? range(to - from, (i) => i + from) : range(to - from, (i) => mapper(i + from));\n};\n\ntype RangeMapper<T> = (n: number) => T;\n\n/**\n * Clamps a value between a minimum and maximum value.\n */\nexport const clamp = (value: number, min: number, max: number): number => {\n  return Math.min(Math.max(value, min), max);\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\n// TODO(burdon): Factor out.\n// TODO(burdon): Consider mathjs for variance, standard deviations, etc.\n// https://www.npmjs.com/package/mathjs\n\nimport { defaultMap } from './map';\n\nexport type Accessor<T, V> = string | ((value: T) => V);\n\nexport const accessBy = <T, V>(value: T, accessor: Accessor<T, V>) =>\n  typeof accessor === 'function' ? accessor(value) : (value as Record<any, any>)[accessor];\n\nexport const median = (values: number[]) => {\n  const mid = Math.floor(values.length / 2);\n  if (values.length % 2 === 1) {\n    return values[mid];\n  } else {\n    return (values[mid - 1] + values[mid]) / 2;\n  }\n};\n\n// TODO(burdon): Value Proto.\nexport type NumericalValues = {\n  min?: number;\n  max?: number;\n  mean?: number;\n  median?: number;\n  total: number;\n  count: number;\n};\n\n/**\n * Returns an array of unique values.\n */\nexport const numericalValues = <T>(values: T[], accessor: Accessor<T, number>) => {\n  const result: NumericalValues = { total: 0, count: 0 };\n\n  const sorted: number[] = values\n    .map((value) => {\n      const v = accessBy(value, accessor);\n      if (v === undefined || isNaN(v)) {\n        return undefined;\n      }\n\n      result.total += v;\n      if (result.min === undefined || v < result.min) {\n        result.min = v;\n      }\n      if (result.max === undefined || v > result.max) {\n        result.max = v;\n      }\n\n      return v;\n    })\n    .filter((value) => value !== undefined)\n    .sort((a, b) => a! - b!) as number[];\n\n  if (sorted.length) {\n    Object.assign(result, {\n      count: sorted.length,\n      mean: result.total / sorted.length,\n      median: median(sorted),\n    });\n  }\n\n  return result;\n};\n\n/**\n * Returns an array of unique values.\n */\nexport const reduceSet = <T, V>(values: T[], accessor: Accessor<T, V>): Set<V> => {\n  return values.reduce((values, value) => {\n    const v = accessBy(value, accessor);\n    values.add(v);\n    return values;\n  }, new Set<V>());\n};\n\n/**\n * Returns an object containing values grouped by the given key accessor.\n */\nexport const reduceGroupBy = <T, K>(values: T[], accessor: Accessor<T, K>): Map<K, T[]> => {\n  return values.reduce((values, value) => {\n    const key = accessBy(value, accessor);\n    defaultMap(values, key, []).push(value);\n    return values;\n  }, new Map<K, T[]>());\n};\n\n/**\n * Generic composable reducer interface.\n */\nexport interface Reducer<T, S> {\n  /**\n   * Get initial state.\n   */\n  initialState(): S;\n\n  /**\n   * Apply event to state.\n   */\n  reduce(state: S, event: T): S;\n}\n\n/**\n * Applies the reducer to the array of values.\n */\nexport const reduceSeries = <T, S>(reducer: Reducer<T, S>, events: T[]): S => {\n  const state = reducer.initialState();\n  for (const event of events) {\n    reducer.reduce(state, event);\n  }\n\n  return state;\n};\n\n/**\n * Reducer to group values.\n */\nexport const createGroupReducer = <T, S>(\n  groupBy: (value: T) => string,\n  sub: Reducer<T, S>,\n): Reducer<T, Record<string, S>> => ({\n  initialState: () => ({}),\n  reduce: (state: Record<string, S>, event: T) => {\n    const key = groupBy(event);\n    state[key] = sub.reduce(state[key] ?? sub.initialState(), event);\n    return state;\n  },\n});\n\nexport type TimeRecord = { timestamp: Date | number | string };\nexport type TimeBucket = { start: number; period: number; count: number };\n\nexport const getDate = (value: Date | number | string): Date => (value instanceof Date ? value : new Date(value));\n\n/**\n * Reducer to group by time period.\n */\nexport const createBucketReducer = <T extends TimeRecord>(period: number): Reducer<T, TimeBucket[]> => ({\n  initialState: () => [],\n  reduce: (series: TimeBucket[], event: T) => {\n    const timestamp = getDate(event.timestamp);\n    let bucket: TimeBucket = series[series.length - 1];\n    if (!bucket || bucket.start + period < timestamp.getTime()) {\n      bucket = { start: timestamp.getTime(), period, count: 0 };\n      series.push(bucket);\n    }\n\n    bucket.count++;\n    return series;\n  },\n});\n", "//\n// Copyright 2024 DXOS.org\n//\n\nexport const removeUndefinedProperties = <T extends {}>(object: T): T => {\n  for (const prop of [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)]) {\n    if ((object as any)[prop] === undefined) {\n      delete (object as any)[prop];\n    }\n  }\n\n  return object;\n};\n\ntype Test = string[] | ((key: string, value: any) => boolean);\n\n/**\n * Recursively remove properties from the object, returning the modified object.\n */\nexport const removeProperties = (root: any, condition: Test): any => {\n  if (!root || typeof root !== 'object') {\n    return root;\n  }\n\n  if (Array.isArray(root)) {\n    return root.map((item) => removeProperties(item, condition));\n  }\n\n  const result = { ...root };\n  if (typeof condition === 'function') {\n    for (const [key, value] of Object.entries(result)) {\n      if (condition(key, value)) {\n        delete result[key];\n      }\n    }\n  } else {\n    for (const key of condition) {\n      delete result[key];\n    }\n  }\n\n  for (const [key, value] of Object.entries(result)) {\n    if (typeof value === 'object') {\n      result[key] = removeProperties(value, condition);\n    }\n  }\n\n  return result;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\n/**\n * A utility for safely performing an asynchronous action on every item from source.\n * @param source elements passed to taskFactory.\n * @param taskFactory a function that converts an elements into an async task.\n * @param onError if provided will be called for every failed task.\n * @returns elements for which task execution failed.\n */\nexport const safeAwaitAll = async <T>(\n  source: Array<T> | IterableIterator<T>,\n  taskFactory: (item: T) => Promise<any>,\n  onError?: (error: Error, item: T, idx: number) => void,\n): Promise<T[]> => {\n  const failedItems: T[] = [];\n  await Promise.all(\n    [...source].map(async (item, idx) => {\n      try {\n        await taskFactory(item);\n      } catch (err: any) {\n        if (onError) {\n          onError(err, item, idx);\n        }\n        failedItems.push(item);\n      }\n    }),\n  );\n  return failedItems;\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nconst instanceTag = Symbol('instanceTag');\n\n/**\n * Makes instanceof work correctly even if the class definition was duplicated (e.g. when bundling).\n * The comparison is done by comparing the tag passed to this function.\n *\n * Example:\n *\n * ```typescript\n * @safeInstanceof('Tagged')\n * class Tagged {}\n * ```\n */\nexport const safeInstanceof =\n  (tag: string): ClassDecorator =>\n  (target: any) => {\n    target.prototype[instanceTag] = tag;\n\n    Object.defineProperty(target.prototype, Symbol.hasInstance, {\n      value: (instance: any) => instance?.[instanceTag] === tag,\n    });\n\n    Object.defineProperty(target, Symbol.hasInstance, {\n      value: (instance: any) => instance?.[instanceTag] === tag,\n    });\n  };\n", "//\n// Copyright 2024 DXOS.org\n//\n\nexport const safeParseInt = (value: string | undefined, defaultValue?: number) => {\n  try {\n    const n = parseInt(value ?? '');\n    return isNaN(n) ? defaultValue : n;\n  } catch (err) {\n    return defaultValue;\n  }\n};\n\nexport const safeParseFloat = (str: string, defaultValue?: number): number | undefined => {\n  try {\n    return parseFloat(str);\n  } catch {\n    return defaultValue ?? 0;\n  }\n};\n\nexport const safeParseJson: {\n  <T extends object>(data: string | undefined | null, defaultValue: T): T;\n  <T extends object>(data: string | undefined | null): T | undefined;\n} = <T extends object>(data: string | undefined | null, defaultValue?: T) => {\n  if (data && data.length > 0) {\n    try {\n      return JSON.parse(data);\n    } catch (err) {}\n  }\n  return defaultValue;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { invariant } from '@dxos/invariant';\n\nimport { CircularBuffer } from './circular-buffer';\n\nexport type SlidingWindowSummaryConfig = {\n  dataPoints: number;\n  /**\n   * The number of digits after decimal.\n   */\n  precision?: number;\n};\n\nexport class SlidingWindowSummary {\n  private readonly _buffer: CircularBuffer<number>;\n  private _sum = 0;\n\n  private readonly _precision: number | undefined;\n\n  constructor(options: SlidingWindowSummaryConfig) {\n    this._buffer = new CircularBuffer(options.dataPoints);\n    if (options.precision != null) {\n      invariant(options.precision >= 0);\n      this._precision = Math.pow(10, options.precision);\n    }\n  }\n\n  public record(value: number): void {\n    const evicted = this._buffer.push(value);\n    this._sum += value - (evicted ?? 0);\n  }\n\n  public average(): number {\n    return this._buffer.elementCount === 0 ? 0 : this._withPrecision(this._sum / this._buffer.elementCount);\n  }\n\n  public computeWindowSummary() {\n    const mean = this.average();\n    const sortedElements = [...this._buffer].sort();\n    const median = this._withPrecision(\n      sortedElements.length % 2 === 0\n        ? (sortedElements[sortedElements.length / 2] + sortedElements[sortedElements.length / 2 - 1]) / 2\n        : sortedElements[sortedElements.length / 2],\n    );\n    const p90 = this._withPrecision(sortedElements[Math.round(sortedElements.length * 0.9)]);\n    const variance = sortedElements.reduce((acc, v) => acc + Math.pow(v - mean, 2)) / sortedElements.length;\n    const stdDev = this._withPrecision(Math.sqrt(variance));\n    const histogram = sortedElements.reduce(\n      (acc, v) => {\n        acc[v] += 1;\n        return acc;\n      },\n      {} as { [element: number]: number },\n    );\n    return { mean, median, p90, stdDev, histogram };\n  }\n\n  private _withPrecision(value: number): number {\n    if (this._precision == null) {\n      return value;\n    }\n    return Math.round(value * this._precision) / this._precision;\n  }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\n// TODO(burdon): Unique.\n// TODO(burdon): Options for undefined to end.\n\ntype Compare<T> = (a: T, b: T) => number;\n\nexport const compareScalar =\n  (inc = true) =>\n  (a: any, b: any) =>\n    (inc ? 1 : -1) * (a < b ? -1 : a > b ? 1 : 0);\n\nexport const compareString =\n  (inc = true, caseInsensitive = true) =>\n  (a: string, b: string) => {\n    if (caseInsensitive) {\n      a = a?.toLowerCase();\n      b = b?.toLowerCase();\n    }\n    return (inc ? 1 : -1) * (a < b ? -1 : a > b ? 1 : 0);\n  };\n\nexport const compareObject =\n  <T extends Record<string, any>>(prop: string, sorter: Compare<any>, inc = true): Compare<any> =>\n  (a: T, b: T) =>\n    (inc ? 1 : -1) * sorter(a[prop], b[prop]);\n\nexport const compareMulti =\n  <T extends Record<string, any>>(sorters: Compare<T>[]) =>\n  (a: T, b: T) => {\n    const sort = (i = 0): number => {\n      const s = sorters[i](a, b);\n      if (s === 0 && i < sorters.length - 1) {\n        return sort(i + 1);\n      } else {\n        return s;\n      }\n    };\n\n    return sort();\n  };\n", "//\n// Copyright 2025 DXOS.org\n//\n\n/**\n * Capitalizes the first letter of a string.\n */\nexport const capitalize = (str: string): string => {\n  if (str.length === 0) {\n    return '';\n  }\n\n  return str.charAt(0).toUpperCase() + str.slice(1);\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nexport const sum = (values: number[]) => values.reduce((a, b) => a + b, 0);\n", "//\n// Copyright 2024 DXOS.org\n//\n\n/**\n * Throws an unhandled error for the runtime to catch.\n * Does not cause stack unwinding.\n * Error will be thrown in the next microtask.\n */\nexport const throwUnhandledError = (error: Error) => {\n  queueMicrotask(() => {\n    throw error;\n  });\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PublicKey } from '@dxos/keys';\n\nexport const idEmoji = [\n  // When changing this set, please check the result in a console or e.g. RunKit (https://runkit.com/thure/642214441dd6ae000855a8de)\n  // Emoji sometimes use a combination of code points, and some code points aren't visible on their own, so by adding or deleting you may unintentionally create non-visible items.\n  // This set was chosen from the characters in Unicode Emoji v15.0 based on the following criteria:\n  // – not people or isolated anthropomorphic faces\n  // – not flags\n  // – more concrete than abstract\n  // – less culturally specific\n  // – less easily confused with another emoji in the set\n  // – requires less special knowledge to identify\n  // – less likely to evoke negative feelings (no meat, no drugs, no weapons, etc)\n  // – less common as a signifier in UX\n  // NOTE that this is intentionally an array of strings because of the way emoji graphemes work.\n  '👻',\n  '👹',\n  '👽',\n  '🤖',\n  '🎃',\n  '🦾',\n  '🦿',\n  '🦷',\n  '👣',\n  '👁️',\n  '🧶',\n  '👑',\n  '🐒',\n  '🦆',\n  '🦉',\n  '🐴',\n  '🦄',\n  '🐝',\n  '🦋',\n  '🐞',\n  '🪲',\n  '🐢',\n  '🦎',\n  '🦕',\n  '🦑',\n  '🦀',\n  '🐠',\n  '🐬',\n  '🐋',\n  '🦭',\n  '🐅',\n  '🐆',\n  '🦓',\n  '🦍',\n  '🦧',\n  '🐘',\n  '🐫',\n  '🦒',\n  '🦘',\n  '🦬',\n  '🐖',\n  '🐏',\n  '🦌',\n  '🐕',\n  '🐈',\n  '🐓',\n  '🦚',\n  '🦜',\n  '🦢',\n  '🦩',\n  '🦦',\n  '🐁',\n  '🐿️',\n  '🌵',\n  '🌲',\n  '🌳',\n  '🪵',\n  '🌱',\n  '🍁',\n  '🪺',\n  '🍄',\n  '🐚',\n  '🪸',\n  '🪨',\n  '🌾',\n  '🌷',\n  '🌻',\n  '☀️',\n  '🌙',\n  '🪐',\n  '⭐️',\n  '⚡️',\n  '☄️',\n  '🔥',\n  '🌈',\n  '☁️',\n  '💧',\n  '⛱️',\n  '🌊',\n  '🍎',\n  '🍋',\n  '🍉',\n  '🍇',\n  '🫐',\n  '🍈',\n  '🍒',\n  '🍑',\n  '🥭',\n  '🍍',\n  '🥥',\n  '🥝',\n  '🥑',\n  '🌶️',\n  '🌽',\n  '🥕',\n  '🍬',\n  '🥜',\n  '🫖',\n  '☕️',\n  '🍵',\n  '🧊',\n  '🧂',\n  '🏔️',\n  '⚓️',\n  '🛟',\n  '🏝️',\n  '🛶',\n  '🚀',\n  '🛰️',\n  '⛲️',\n  '🏰',\n  '🚲',\n  '⛺️',\n  '🎙️',\n  '🧲',\n  '⚙️',\n  '🔩',\n  '🔮',\n  '🔭',\n  '🔬',\n  '🧬',\n  '🌡️',\n  '🧺',\n  '🛎️',\n  '🔑',\n  '🪑',\n  '🧸',\n  '🎈',\n  '🎀',\n  '🎊',\n  '♻️',\n  '🎵',\n];\n\nexport const idHue = [\n  'red' as const,\n  // 'orange' as const, /* More shades in these palettes are considered “ugly” */\n  'amber' as const, // Amber arcs between red-orange and yellow as it gets lighter, so improves aesthetics.\n  // 'yellow' as const, /* More shades in these palettes are considered “ugly” */\n  'lime' as const,\n  'green' as const,\n  'emerald' as const,\n  'teal' as const,\n  'cyan' as const,\n  // 'sky' as const, /* Omitted since it is quite similar to the primary accent palette */\n  // 'blue' as const, /* Omitted since it is quite similar to the primary accent palette */\n  // 'indigo' as const, /* Omitted since it is quite similar to the primary accent palette */\n  'violet' as const,\n  'purple' as const,\n  'fuchsia' as const,\n  'pink' as const,\n  'rose' as const,\n];\n\n// TODO(wittjosiah): Do we need all of these variants?\nexport const keyToEmoji = (key: PublicKey) => keyToFallback(key).emoji;\n\nexport const hexToEmoji = (hex: string) => hexToFallback(hex).emoji;\n\nexport const toEmoji = (hash: number) => toFallback(hash).emoji;\n\nexport const keyToHue = (key: PublicKey) => keyToFallback(key).hue;\n\nexport const hexToHue = (hex: string) => hexToFallback(hex).hue;\n\nexport const toHue = (hash: number) => toFallback(hash).hue;\n\nexport type FallbackValue = {\n  emoji: string;\n  hue: (typeof idHue)[number];\n};\n\nexport const keyToFallback = (key: PublicKey) => hexToFallback(key.toHex());\n\n// TODO(wittjosiah): Support non-hex strings (e.g. DIDs, UUIDs, etc.)\nexport const hexToFallback = (hex: string) => toFallback(parseInt(hex, 16));\n\nexport const toFallback = (hash: number): FallbackValue => {\n  // Calculate total possible combinations of emoji and hue pairs\n  const totalCombinations = idEmoji.length * idHue.length;\n\n  // Get a deterministic index within the range of all possible combinations\n  const combinationIndex = hash % totalCombinations;\n\n  // Calculate which emoji to use based on the combination index\n  const emojiIndex = Math.floor(combinationIndex / idHue.length);\n\n  // Calculate which hue to use based on the combination index\n  const hueIndex = combinationIndex % idHue.length;\n\n  return {\n    emoji: idEmoji[emojiIndex],\n    hue: idHue[hueIndex],\n  };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { defaultMap } from './map';\n\n/**\n * Tracer events form a graph.\n */\nexport type Event = {\n  id: string;\n  timestamp: number; // ms.\n  duration?: number; // ms (float).\n  value?: any;\n};\n\n/**\n * Event sink.\n */\n// TODO(burdon): Reconcile with log.trace.\nexport class Tracer {\n  private readonly _events = new Map<string, Event[]>();\n\n  private _recording = false;\n\n  // TODO(burdon): Start/stop methods for recording data? By id?\n  //  Alternatively, enable subscriptions to track/compute series.\n\n  // TODO(burdon): Hierarchical traces?\n\n  get recording() {\n    return this._recording;\n  }\n\n  keys(): string[] {\n    return Array.from(this._events.keys());\n  }\n\n  get(id: string, filter?: Record<string, any>): Event[] | undefined {\n    const events = this._events.get(id);\n    if (filter) {\n      return events?.filter((event) => Object.entries(filter).every(([key, value]) => event?.value[key] === value));\n    }\n\n    return events;\n  }\n\n  clear(): void {\n    this._events.clear();\n  }\n\n  start(): this {\n    this._recording = true;\n    return this;\n  }\n\n  stop(): this {\n    this._recording = false;\n    return this;\n  }\n\n  emit(id: string, value?: any): void {\n    this._post(this._createEvent(id, value));\n  }\n\n  mark(id: string, value?: any): { start: number; end: () => void } {\n    const event = this._createEvent(id, value);\n    const start = performance.now();\n    return {\n      start,\n      end: () => {\n        event.duration = performance.now() - start;\n        this._post(event);\n      },\n    };\n  }\n\n  private _createEvent(id: string, value?: any): Event {\n    const event: Event = { id, timestamp: Date.now() };\n    if (value !== undefined) {\n      event.value = value;\n    }\n\n    return event;\n  }\n\n  private _post(event: Event): void {\n    if (this._recording) {\n      defaultMap(this._events, event.id, []).push(event);\n    }\n  }\n}\n\n// TODO(burdon): Factor out (move to @dxos/log?)\n// TODO(burdon): Global singleton (e.g., `trace()`) or part of client services?\nexport const tracer = new Tracer();\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { truncateKey } from '@dxos/debug';\n\n// TODO(burdon): See also https://www.npmjs.com/package/object-treeify\n\nexport type TreeNode = {\n  id: string;\n  children?: TreeNode[];\n};\n\n/**\n * Create tree using depth first traversal.\n * https://waylonwalker.com/drawing-ascii-boxes/#connectors\n */\nexport const stringifyTree = (node: TreeNode, ancestors: [TreeNode, number][] = [], rows: string[] = []) => {\n  if (node.children?.length) {\n    node.children!.forEach((child: TreeNode, i) => {\n      stringifyTree(child, [...ancestors, [node, i]], rows);\n    });\n  } else {\n    const keyLen = 8;\n    const name = (node: TreeNode) => truncateKey(node.id, keyLen);\n\n    const parts = [];\n    ancestors.forEach(([node, i], j) => {\n      // Current is on first row.\n      const first = ancestors.slice(j).every(([_, i]) => i === 0);\n\n      // Root.\n      parts.push(j === 0 ? (first ? '├' : ' ') : '');\n\n      // Ancestor name (if first row) or padding.\n      parts.push(first ? `─(${name(node)})─` : ''.padEnd(keyLen + 4));\n\n      if (node.children) {\n        // Connector to children.\n        if (first) {\n          parts.push(node.children.length > 1 ? '┬' : '─');\n        } else {\n          // Child is on first row.\n          const childFirst = ancestors.slice(j + 1).every(([_, i]) => i === 0);\n\n          // Last child.\n          if (node.children.length - 1 === i) {\n            parts.push(childFirst ? '╰' : ' ');\n          } else {\n            parts.push(childFirst ? '├' : '│');\n          }\n        }\n      }\n    });\n\n    parts.push(`─(${name(node)})`);\n    rows.push(parts.join(''));\n  }\n\n  return rows; // .join('\\n');\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nexport type AsyncCallback<T> = (param: T) => Promise<void>;\n\nexport type Provider<T, V = void> = (arg: V) => T;\n\nexport type MaybeProvider<T, V = void> = T | ((arg: V) => T);\n\nexport type MaybePromise<T> = T | Promise<T>;\n\nexport type GuardedType<T> = T extends (value: any) => value is infer R ? R : never;\n\nexport type DeepReadonly<T> = {\n  readonly [P in keyof T]: T[P] extends Record<string, any>\n    ? DeepReadonly<T[P]>\n    : T[P] extends Array<infer U>\n      ? ReadonlyArray<DeepReadonly<U>>\n      : T[P];\n};\n\nexport type DeepWriteable<T> = { -readonly [K in keyof T]: T[K] extends object ? DeepWriteable<T[K]> : T[K] };\n\n/**\n * Simplifies type (copied from effect).\n */\nexport type Simplify<A> = { [K in keyof A]: A[K] } extends infer B ? B : never;\n\n/**\n * Replace types of specified keys.\n */\nexport type Specialize<T, U> = Simplify<Omit<T, keyof U> & U>;\n\n/**\n * Make specified keys optional.\n */\n// TODO(burdon): Wrapping with Simplify fails.\nexport type MakeOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;\n\n/**\n * All types that evaluate to false when cast to a boolean.\n */\nexport type Falsy = false | 0 | '' | null | undefined;\n\n/**\n * Use with filter chaining instead of filter(Boolean) to preserve type.\n * NOTE: To filter by type:\n * items.filter((item: any): item is RangeSet<Decoration> => item instanceof RangeSet)\n */\nexport const isNotFalsy = <T>(value: T): value is Exclude<T, Falsy> => !!value;\nexport const isNonNullable = <T>(value: T | null | undefined): value is T => value != null;\n\n// TODO(burdon): Replace use of setTimeout everywhere?\n//  Would remove the need to cancel (and associated errors), but would change the operation of the code\n//  since the function would call immediately instead of waiting for the next tick.\n//  Could this affect performance? Otherwise replace with queueMicrotask?\nexport const doAsync = async (fn: () => Promise<void>) => fn();\n\n/**\n * Get value from a provider.\n */\nexport const getProviderValue = <T, V = void>(provider: MaybeProvider<T, V>, arg?: V): T => {\n  return typeof provider === 'function' ? (provider as Function)(arg) : provider;\n};\n\n/**\n * Get value from a provider, which may be async.\n */\nexport const getAsyncProviderValue = <T, V = void>(\n  provider: MaybeProvider<MaybePromise<T>, V>,\n  arg?: V,\n): MaybePromise<T> => {\n  return getProviderValue(provider, arg);\n};\n\n/**\n * Remove keys with undefined values.\n */\nexport const stripUndefined = <T extends { [index: string]: any }>(obj: T): T => {\n  if (typeof obj === 'object') {\n    Object.keys(obj).forEach((key) => {\n      const value = obj[key];\n      if (value === undefined) {\n        delete obj[key];\n      } else if (value !== null && typeof value === 'object') {\n        stripUndefined(value); // TODO(burdon): Test recursion.\n      }\n    });\n  }\n\n  return obj;\n};\n\n/**\n * Return new object with sorted keys.\n */\nexport const sortKeys = <T extends object>(obj: T): T =>\n  Object.keys(obj)\n    .sort()\n    .reduce<T>((sorted, key) => {\n      (sorted as any)[key] = (obj as any)[key];\n      return sorted;\n    }, {} as T);\n\n/**\n * Swap position of element within array.\n */\nexport const arrayMove = <T>(array: T[], from: number, to: number): Array<T> => {\n  array.splice(to < 0 ? array.length + to : to, 0, array.splice(from, 1)[0]);\n  return array;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\n/**\n * Weak dictionary. It is a map that holds weak references to its values and allows garbage collection of values and keys.\n */\nexport class WeakDictionary<K, V extends object> implements Map<K, V> {\n  private readonly _internal = new Map<K, WeakRef<V>>();\n  private readonly _finalization = new FinalizationRegistry((cleanUpCallback: () => void) => {\n    cleanUpCallback();\n  });\n\n  constructor(entries?: [K, V][]) {\n    this._internal = new Map(entries?.map(([key, value]) => [key, new WeakRef(value)]));\n    entries?.forEach(([key, value]) => this._register(key, value));\n  }\n\n  *entries(): SetIterator<[K, V]> {\n    for (const [key, value] of this._internal) {\n      yield [key, value.deref()!];\n    }\n  }\n\n  keys(): SetIterator<K> {\n    return this._internal.keys();\n  }\n\n  *values(): SetIterator<V> {\n    for (const value of this._internal.values()) {\n      const deref = value.deref();\n      if (!deref) {\n        continue;\n      }\n      yield deref;\n    }\n  }\n\n  *[Symbol.iterator](): SetIterator<[K, V]> {\n    for (const [key, value] of this._internal) {\n      yield [key, value.deref()!];\n    }\n  }\n\n  get [Symbol.toStringTag](): string {\n    return 'WeakDictionary';\n  }\n\n  get size(): number {\n    return this._internal.size;\n  }\n\n  get(key: K): V | undefined {\n    return this._internal.get(key)?.deref();\n  }\n\n  set(key: K, value: V): this {\n    this._internal.set(key, new WeakRef(value));\n    this._register(key, value);\n    return this;\n  }\n\n  has(key: K): boolean {\n    return this._internal.has(key) && this._internal.get(key)!.deref() !== undefined;\n  }\n\n  delete(key: K): boolean {\n    const value = this._internal.get(key)?.deref();\n    if (value) {\n      this._unregister(value);\n    }\n    return this._internal.delete(key);\n  }\n\n  clear(): void {\n    this._internal.forEach((value) => {\n      const v = value.deref();\n      if (v) {\n        this._unregister(v);\n      }\n    });\n\n    this._internal.clear();\n  }\n\n  forEach(callbackfn: (value: V, key: K, map: Map<K, V>) => void, thisArg?: any): void {\n    if (thisArg) {\n      callbackfn = callbackfn.bind(thisArg);\n    }\n\n    this._internal.forEach((value, key) => {\n      const v = value.deref();\n      if (v) {\n        callbackfn(v, key, this);\n      }\n    });\n  }\n\n  private _register(key: K, value: V): void {\n    this._finalization.register(\n      value,\n      () => {\n        this._internal.delete(key);\n      },\n      value,\n    );\n  }\n\n  private _unregister(value: V): void {\n    this._finalization.unregister(value);\n  }\n}\n", "//\n// Copyright 2025 DXOS.org\n//\n\n/**\n * Assumes the type of the value.\n *\n * @param value - The value to assume the type of.\n *\n * @example\n * ```ts\n * const value: unknown = 1;\n * assumeType<number>(value);\n *\n * // value is now of type number\n * ```\n */\n// NOTE: Keep as `function` to avoid type inference issues.\n// eslint-disable-next-line @stayradiated/prefer-arrow-functions/prefer-arrow-functions\nexport function assumeType<T>(value: unknown): asserts value is T {\n  // No-op.\n}\n"],
  "mappings": "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ACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAMK,IAAMC,cAAN,MAAMA;;;;;;;;;;;;;;EAcX,YAA6BC,WAAWF,kBAAkB;SAA7BE,WAAAA;AAC3B,QAAIA,SAASC,WAAW,KAAK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QAAQI,SAAS,GAAG;AACrC,aAAOH,KAAKC,IAAI,CAAA;IAClB,OAAO;AACL,aAAOC;IACT;EACF;AAEA,SAAOF,KAAAA;AACT;;;ACnCK,IAAMI,aAAa,CAACC,QAAAA;AACzB,MAAIA,IAAIC,WAAW,GAAG;AACpB,WAAO;EACT;AAEA,SAAOD,IAAIE,OAAO,CAAA,EAAGC,YAAW,IAAKH,IAAII,MAAM,CAAA;AACjD;;;ACTO,IAAMC,MAAM,CAACC,WAAqBA,OAAOC,OAAO,CAACC,GAAGC,MAAMD,IAAIC,GAAG,CAAA;;;ACKjE,IAAMC,sBAAsB,CAACC,UAAAA;AAClCC,iBAAe,MAAA;AACb,UAAMD;EACR,CAAA;AACF;;;ACPO,IAAME,UAAU;;;;;;;;;;;;;EAarB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGK,IAAMC,QAAQ;EACnB;;EAEA;;EAEA;EACA;EACA;EACA;EACA;;;;EAIA;EACA;EACA;EACA;EACA;;AAIK,IAAMC,aAAa,CAACC,QAAmBC,cAAc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",
  "names": ["byteToHex", "n", "hexOctet", "toString", "padStart", "push", "arrayToHex", "buf", "buff", "Uint8Array", "hexOctets", "i", "length", "join", "diff", "previous", "next", "comparator", "remaining", "result", "added", "updated", "removed", "object", "index", "findIndex", "item", "push", "splice", "intersection", "a", "b", "filter", "find", "undefined", "distinctBy", "array", "selector", "seenKeys", "Set", "key", "has", "add", "removeBy", "test", "i", "length", "partition", "guard", "reduce", "accepted", "rejected", "intersectBy", "arrays", "first", "rest", "lookups", "map", "Map", "set", "every", "lookup", "util", "createBinder", "obj", "fn", "bind", "async", "util", "promisify", "invariant", "BitField", "get", "data", "idx", "bit", "set", "value", "count", "begin", "end", "i", "invert", "result", "Uint8Array", "length", "and", "first", "second", "findIndexes", "opts", "start", "push", "ones", "res", "Math", "ceil", "fill", "bitInLastByte", "zeros", "CallbackCollection", "append", "callback", "push", "prepend", "unshift", "remove", "filter", "c", "callParallel", "args", "Promise", "all", "map", "callSerial", "results", "invariant", "Callback", "call", "args", "_callback", "callIfSet", "set", "callback", "isSet", "createSetDispatch", "handlers", "Proxy", "get", "target", "prop", "forEach", "handler", "method", "apply", "LOW_DASH", "codePointAt", "HI_DASH", "SMALL_A", "CAPITAL_A", "SMALL_Z", "CAPITAL_Z", "isLower", "char", "isUpper", "toLower", "changeCase", "str", "delim", "firstChar", "charCodeAt", "length", "changed", "out", "i", "c", "push", "String", "fromCharCode", "apply", "undefined", "decamelize", "hyphenize", "chunkArray", "array", "size", "result", "i", "length", "push", "slice", "invariant", "CircularBuffer", "size", "_nextIndex", "_elementCount", "_buffer", "Array", "push", "element", "evicted", "length", "undefined", "Math", "min", "elementCount", "getLast", "Symbol", "iterator", "values", "i", "clearUndefined", "obj", "key", "Object", "getOwnPropertyNames", "getOwnPropertySymbols", "undefined", "inspect", "inspectObject", "raise", "MAX_SERIALIZATION_LENGTH", "ComplexSet", "_projection", "values", "_values", "Map", "value", "add", "toString", "inspectObject", "toJSON", "size", "Array", "from", "inspect", "custom", "set", "clear", "delete", "forEach", "callbackfn", "thisArg", "bind", "has", "Symbol", "iterator", "entries", "keys", "toStringTag", "union", "other", "Error", "intersection", "difference", "symmetricDifference", "isSubsetOf", "isSupersetOf", "isDisjointFrom", "makeSet", "projection", "BoundComplexSet", "ComplexMap", "_keyProjection", "_keys", "key", "keyDeleted", "valueDeleted", "primitive", "get", "raise", "mapValues", "mapper", "map", "makeMap", "keyProjection", "BoundComplexMap", "get", "set", "invariant", "setDeep", "obj", "path", "value", "invariant", "length", "parent", "key", "slice", "undefined", "isArrayIndex", "isNaN", "Number", "at", "getDeep", "deferFunction", "fnProvider", "args", "Symbol", "dispose", "asyncDispose", "defer", "fn", "DeferGuard", "_fn", "Symbol", "dispose", "result", "Promise", "Error", "deferAsync", "DeferAsyncGuard", "asyncDispose", "entry", "map", "key", "MapEntry", "_map", "_key", "value", "get", "orInsert", "has", "set", "deep", "renderableCharRegex", "getFirstTwoRenderableChars", "label", "characters", "Array", "from", "result", "foundFirst", "i", "length", "char", "test", "textBetween", "slice", "join", "forEachAsync", "items", "fn", "Promise", "all", "map", "PublicKey", "DEFAULT_WORDLIST", "HumanHasher", "wordlist", "length", "Error", "humanize", "hexdigest", "words", "separator", "pairs", "match", "bytes", "map", "x", "parseInt", "compressed", "_compress", "join", "target", "segSize", "segments", "i", "push", "slice", "concat", "checksums", "reduce", "acc", "curr", "hasher", "value", "Buffer", "Uint8Array", "ArrayBuffer", "PublicKey", "stringify", "toHex", "defaultMap", "map", "key", "def", "value", "get", "undefined", "set", "symbol", "Symbol", "for", "instanceContexts", "globalThis", "WeakMap", "getPrototypeSpecificInstanceId", "instance", "prototype", "Object", "getPrototypeOf", "instanceCtx", "defaultMap", "nextId", "instanceIds", "id", "get", "undefined", "set", "getDebugName", "name", "exponentialBackoffInterval", "cb", "initialInterval", "interval", "repeat", "timeoutId", "setTimeout", "clearTimeout", "joinTables", "leftColumn", "rightColumn", "left", "right", "map", "Map", "used", "Set", "row", "set", "result", "get", "add", "push", "Object", "assign", "has", "inspect", "PublicKey", "arraysEqual", "a", "b", "length", "i", "arrayToBuffer", "array", "Buffer", "from", "buffer", "byteOffset", "byteLength", "bufferToArray", "Uint8Array", "stringToArray", "string", "arrayToString", "toString", "MAX_DEPTH", "LOG_MAX_DEPTH", "jsonReplacer", "key", "value", "inspect", "custom", "type", "Array", "isArray", "data", "length", "Buffer", "from", "humanize", "PublicKey", "stringify", "toString", "jsonify", "depth", "visitedObjects", "WeakSet", "has", "add", "Uint8Array", "arrayToBuffer", "map", "x", "toJSON", "res", "Object", "keys", "delete", "jsonlogify", "toJSONL", "jsonKeyReplacer", "options", "fromHex", "toHex", "truncate", "mapValues", "obj", "fn", "result", "Object", "keys", "forEach", "key", "deepMapValues", "value", "DeepMapper", "map", "_fn", "_cyclic", "Map", "_recurse", "has", "get", "Array", "isArray", "res", "length", "set", "i", "_map", "undefined", "deepMapValuesAsync", "DeepMapperAsync", "visitValues", "object", "visitor", "item", "index", "entries", "keys", "obj", "Object", "entries", "orderKeys", "obj", "order", "ordered", "key", "inferObjectOrder", "objectMap", "order", "orderedObjects", "reduce", "acc", "id", "objects", "push", "ids", "add", "Set", "Object", "keys", "has", "inferRecordOrder", "assign", "filter", "pick", "obj", "keys", "reduce", "result", "key", "pickBy", "predicate", "omit", "forEach", "isNode", "process", "versions", "node", "mobileAndTabletCheck", "check", "a", "test", "substr", "navigator", "userAgent", "vendor", "window", "opera", "iosCheck", "includes", "platform", "document", "safariCheck", "getHostPlatform", "userAgentData", "toLowerCase", "startsWith", "byPosition", "position", "a", "b", "randomInt", "max", "min", "Math", "ceil", "floor", "random", "range", "n", "mapper", "Array", "from", "keys", "map", "rangeFromTo", "to", "i", "clamp", "value", "min", "max", "Math", "accessBy", "value", "accessor", "median", "values", "mid", "Math", "floor", "length", "numericalValues", "result", "total", "count", "sorted", "map", "v", "undefined", "isNaN", "min", "max", "filter", "sort", "a", "b", "Object", "assign", "mean", "reduceSet", "reduce", "add", "Set", "reduceGroupBy", "key", "defaultMap", "push", "Map", "reduceSeries", "reducer", "events", "state", "initialState", "event", "createGroupReducer", "groupBy", "sub", "getDate", "Date", "createBucketReducer", "period", "series", "timestamp", "bucket", "start", "getTime", "removeUndefinedProperties", "object", "prop", "Object", "getOwnPropertyNames", "getOwnPropertySymbols", "undefined", "removeProperties", "root", "condition", "Array", "isArray", "map", "item", "result", "key", "value", "entries", "safeAwaitAll", "source", "taskFactory", "onError", "failedItems", "Promise", "all", "map", "item", "idx", "err", "push", "instanceTag", "Symbol", "safeInstanceof", "tag", "target", "prototype", "Object", "defineProperty", "hasInstance", "value", "instance", "safeParseInt", "value", "defaultValue", "n", "parseInt", "isNaN", "err", "safeParseFloat", "str", "parseFloat", "safeParseJson", "data", "length", "JSON", "parse", "invariant", "SlidingWindowSummary", "options", "_sum", "_buffer", "CircularBuffer", "dataPoints", "precision", "invariant", "_precision", "Math", "pow", "record", "value", "evicted", "push", "average", "elementCount", "_withPrecision", "computeWindowSummary", "mean", "sortedElements", "sort", "median", "length", "p90", "round", "variance", "reduce", "acc", "v", "stdDev", "sqrt", "histogram", "compareScalar", "inc", "a", "b", "compareString", "caseInsensitive", "toLowerCase", "compareObject", "prop", "sorter", "compareMulti", "sorters", "sort", "i", "s", "length", "capitalize", "str", "length", "charAt", "toUpperCase", "slice", "sum", "values", "reduce", "a", "b", "throwUnhandledError", "error", "queueMicrotask", "idEmoji", "idHue", "keyToEmoji", "key", "keyToFallback", "emoji", "hexToEmoji", "hex", "hexToFallback", "toEmoji", "hash", "toFallback", "keyToHue", "hue", "hexToHue", "toHue", "toHex", "parseInt", "totalCombinations", "length", "combinationIndex", "emojiIndex", "Math", "floor", "hueIndex", "Tracer", "_events", "Map", "_recording", "recording", "keys", "Array", "from", "get", "id", "filter", "events", "event", "Object", "entries", "every", "key", "value", "clear", "start", "stop", "emit", "_post", "_createEvent", "mark", "performance", "now", "end", "duration", "timestamp", "Date", "undefined", "defaultMap", "push", "tracer", "truncateKey", "stringifyTree", "node", "ancestors", "rows", "children", "length", "forEach", "child", "i", "keyLen", "name", "truncateKey", "id", "parts", "j", "first", "slice", "every", "_", "push", "padEnd", "childFirst", "join", "isNotFalsy", "value", "isNonNullable", "doAsync", "fn", "getProviderValue", "provider", "arg", "getAsyncProviderValue", "stripUndefined", "obj", "Object", "keys", "forEach", "key", "undefined", "sortKeys", "sort", "reduce", "sorted", "arrayMove", "array", "from", "to", "splice", "length", "WeakDictionary", "entries", "_internal", "Map", "_finalization", "FinalizationRegistry", "cleanUpCallback", "map", "key", "value", "WeakRef", "forEach", "_register", "deref", "keys", "values", "Symbol", "iterator", "toStringTag", "size", "get", "set", "has", "undefined", "delete", "_unregister", "clear", "v", "callbackfn", "thisArg", "bind", "register", "unregister", "assumeType", "value"]
}
