{
  "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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CAAA,IAAKyG;AACZoG,qBAAa;MACf,OAAO;AAEL,cAAMC,cAAcF,WAAWnF,MAAMzH,OAAO,CAAA,EAAGP,QAAQD,CAAAA,EAAGE,KAAK,EAAA;AAC/D,YAAI,kBAAkB8B,KAAKsL,WAAAA,GAAc;AACvC9M,iBAAO,CAAA,IAAKyG;AACZ;QACF;MACF;IACF;EACF;AAEA,SAAOzG;AACT;ACvCO,IAAM+M,eAAe,CAAIC,OAAYtK,OAAgDqC,QAAQC,IAAIgI,MAAM7K,IAAIO,EAAAA,CAAAA;ACIlH,IAAMuK,mBAAmB;EACvB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;E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GAAG;AACrC,aAAOuW,KAAKxW,IAAI,CAAA;IAClB,OAAO;AACL,aAAO4a;IACT;EACF;AAEA,SAAOpE,KAAAA;AACT;ACnCK,IAAMqE,aAAa,CAACxT,QAAAA;AACzB,MAAIA,IAAIpH,WAAW,GAAG;AACpB,WAAO;EACT;AAEA,SAAOoH,IAAIyT,OAAO,CAAA,EAAGC,YAAW,IAAK1T,IAAIY,MAAM,CAAA;AACjD;ACTO,IAAM+S,MAAM,CAAClS,WAAqBA,OAAO3G,OAAO,CAACjB,GAAGC,MAAMD,IAAIC,GAAG,CAAA;ACKjE,IAAM8Z,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,CAAC1Z,QAAmB2Z,cAAc3Z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",
  "names": ["import_invariant", "import_node_util", "import_lodash", "import_keys", "import_debug", "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", "splice", "intersection", "a", "b", "filter", "find", "undefined", "distinctBy", "array", "selector", "seenKeys", "Set", "key", "has", "add", "removeBy", "test", "partition", "guard", "reduce", "accepted", "rejected", "intersectBy", "arrays", "first", "rest", "lookups", "map", "Map", "set", "every", "lookup", "createBinder", "obj", "fn", "bind", "async", "util", "promisify", "BitField", "get", "data", "idx", "bit", "value", "count", "begin", "end", "invert", "and", "second", "invariant", "findIndexes", "opts", "start", "ones", "res", "Math", "ceil", "fill", "bitInLastByte", "zeros", "CallbackCollection", "append", "callback", "prepend", "unshift", "remove", "c", "callParallel", "args", "Promise", "all", "callSerial", "results", "Callback", "call", "_callback", "callIfSet", "isSet", "createSetDispatch", "handlers", "Proxy", "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", "changed", "out", "String", "fromCharCode", "decamelize", "hyphenize", "chunkArray", "size", "slice", "CircularBuffer", "_nextIndex", "_elementCount", "_buffer", "Array", "element", "evicted", "min", "elementCount", "getLast", "Symbol", "iterator", "values", "clearUndefined", "Object", "getOwnPropertyNames", "getOwnPropertySymbols", "MAX_SERIALIZATION_LENGTH", "ComplexSet", "_projection", "_values", "inspectObject", "toJSON", "from", "inspect", "custom", "clear", "delete", "callbackfn", "thisArg", "entries", "keys", "toStringTag", "union", "other", "Error", "difference", "symmetricDifference", "isSubsetOf", "isSupersetOf", "isDisjointFrom", "makeSet", "projection", "BoundComplexSet", "ComplexMap", "_keyProjection", "_keys", "keyDeleted", "valueDeleted", "primitive", "raise", "mapValues", "mapper", "makeMap", "keyProjection", "BoundComplexMap", "setDeep", "path", "parent", "isArrayIndex", "isNaN", "Number", "at", "getDeep", "deferFunction", "fnProvider", "dispose", "asyncDispose", "defer", "DeferGuard", "_fn", "deferAsync", "DeferAsyncGuard", "entry", "MapEntry", "_map", "_key", "orInsert", "deep", "renderableCharRegex", "getFirstTwoRenderableChars", "label", "characters", "foundFirst", "textBetween", "forEachAsync", "items", "DEFAULT_WORDLIST", "HumanHasher", "wordlist", "humanize", "hexdigest", "words", "separator", "pairs", "match", "bytes", "x", "parseInt", "compressed", "_compress", "segSize", "segments", "concat", "checksums", "acc", "curr", "hasher", "Buffer", "ArrayBuffer", "PublicKey", "stringify", "toHex", "defaultMap", "def", "symbol", "for", "instanceContexts", "globalThis", "WeakMap", "getPrototypeSpecificInstanceId", "instance", "prototype", "getPrototypeOf", "instanceCtx", "nextId", "instanceIds", "id", "getDebugName", "name", "exponentialBackoffInterval", "cb", "initialInterval", "interval", "repeat", "timeoutId", "setTimeout", "clearTimeout", "joinTables", "leftColumn", "rightColumn", "left", "right", "used", "row", "assign", "arraysEqual", "arrayToBuffer", "buffer", "byteOffset", "byteLength", "bufferToArray", "stringToArray", "string", "arrayToString", "MAX_DEPTH", "LOG_MAX_DEPTH", "jsonReplacer", "type", "isArray", "jsonify", "depth", "visitedObjects", "WeakSet", "jsonlogify", "toJSONL", "jsonKeyReplacer", "options", "fromHex", "truncate", "deepMapValues", "DeepMapper", "_cyclic", "_recurse", "deepMapValuesAsync", "DeepMapperAsync", "visitValues", "visitor", "orderKeys", "order", "ordered", "inferObjectOrder", "objectMap", "orderedObjects", "objects", "ids", "inferRecordOrder", "pick", "pickBy", "predicate", "omit", "isNode", "process", "versions", "node", "mobileAndTabletCheck", "check", "substr", "navigator", "userAgent", "vendor", "window", "opera", "iosCheck", "includes", "platform", "document", "safariCheck", "getHostPlatform", "userAgentData", "toLowerCase", "startsWith", "byPosition", "position", "randomInt", "max", "floor", "random", "range", "rangeFromTo", "to", "clamp", "accessBy", "accessor", "median", "mid", "numericalValues", "total", "sorted", "v", "sort", "mean", "reduceSet", "reduceGroupBy", "reduceSeries", "reducer", "events", "state", "initialState", "event", "createGroupReducer", "groupBy", "sub", "getDate", "Date", "createBucketReducer", "period", "series", "timestamp", "bucket", "getTime", "removeUndefinedProperties", "removeProperties", "root", "condition", "safeAwaitAll", "source", "taskFactory", "onError", "failedItems", "err", "instanceTag", "safeInstanceof", "tag", "defineProperty", "hasInstance", "safeParseInt", "defaultValue", "safeParseFloat", "parseFloat", "safeParseJson", "JSON", "parse", "SlidingWindowSummary", "_sum", "dataPoints", "precision", "_precision", "pow", "record", "average", "_withPrecision", "computeWindowSummary", "sortedElements", "p90", "round", "variance", "stdDev", "sqrt", "histogram", "compareScalar", "inc", "compareString", "caseInsensitive", "compareObject", "sorter", "compareMulti", "sorters", "s", "capitalize", "charAt", "toUpperCase", "sum", "throwUnhandledError", "error", "queueMicrotask", "idEmoji", "idHue", "keyToEmoji", "keyToFallback", "emoji", "hexToEmoji", "hex", "hexToFallback", "toEmoji", "hash", "toFallback", "keyToHue", "hue", "hexToHue", "toHue", "totalCombinations", "combinationIndex", "emojiIndex", "hueIndex", "Tracer", "_events", "_recording", "recording", "stop", "emit", "_post", "_createEvent", "mark", "performance", "now", "duration", "tracer", "stringifyTree", "ancestors", "rows", "children", "child", "keyLen", "truncateKey", "parts", "j", "_", "padEnd", "childFirst", "isNotFalsy", "isNonNullable", "doAsync", "getProviderValue", "provider", "arg", "getAsyncProviderValue", "stripUndefined", "sortKeys", "arrayMove", "WeakDictionary", "_internal", "_finalization", "FinalizationRegistry", "cleanUpCallback", "WeakRef", "_register", "deref", "_unregister", "register", "unregister", "assumeType"]
}
