{"version":3,"file":"index.mjs","sources":["../src/decorator/categories/deflateCategories.ts","../src/decorator/categories/inflateCategories.ts","../src/decorator/categories/mergeCategories.ts","../src/is-debug/createIsDebug.ts","../src/is-debug/index.ts","../src/utils/flow.ts","../src/utils/isActionable.ts","../src/utils/isError.ts","../src/utils/isPromiseLike.ts","../src/utils/isObject.ts","../src/utils/isUndefined.ts","../src/decorator/message-stack/MessageStack.ts","../src/decorator/StackTraceError.ts","../src/decorator/Bunyamin.ts","../src/noopLogger/noopLogger.ts","../src/thread-groups/ThreadGroups.ts","../src/realm.ts","../src/streams/bunyan-trace-event/threads/ThreadDispatcher.ts","../src/streams/bunyan-trace-event/threads/ThreadGroupDispatcher.ts","../src/streams/bunyan-trace-event/bunyan2trace/bunyan2trace.ts","../src/streams/bunyan-trace-event/StreamEventBuilder.ts","../src/streams/bunyan-trace-event/options/normalizeOptions.ts","../src/streams/bunyan-trace-event/BunyanTraceEventStream.ts","../src/streams/jsonl/jsonlReadFile.ts","../src/streams/jsonl/jsonlWriteFile.ts","../src/streams/trace-merge/resolvers/tree/abstract/ArrayTreeNode.ts","../src/streams/trace-merge/resolvers/tree/abstract/RangeTreeNode.ts","../src/streams/trace-merge/resolvers/tree/concrete/FileNode.ts","../src/streams/trace-merge/resolvers/tree/concrete/PIDNode.ts","../src/streams/trace-merge/resolvers/tree/concrete/RootNode.ts","../src/streams/trace-merge/resolvers/PIDResolver.ts","../src/streams/trace-merge/resolvers/FilePIDResolver.ts","../src/streams/trace-merge/transforms/multisort.ts","../src/streams/trace-merge/transforms/TraceAnalyze.ts","../src/streams/trace-merge/transforms/TraceMerge.ts","../src/streams/trace-merge/traceMerge.ts","../src/traceEventStream.ts","../src/uniteTraceEvents.ts","../src/wrapLogger.ts","../src/index.ts"],"sourcesContent":["export function deflateCategories(cat: unknown): string | undefined {\n  if (!cat) {\n    return undefined;\n  }\n\n  if (Array.isArray(cat)) {\n    return cat.filter(Boolean).join(',');\n  }\n\n  return String(cat);\n}\n","export function inflateCategories(cat: unknown): string[] {\n  if (!cat) {\n    return [];\n  }\n\n  if (Array.isArray(cat)) {\n    return cat;\n  }\n\n  return String(cat).split(',');\n}\n","import { inflateCategories } from './inflateCategories';\n\nexport function mergeCategories(left: string[] | undefined, right: unknown): string[] | undefined {\n  if (!left || !right) {\n    if (left) return left;\n    if (right) return inflateCategories(right);\n    return undefined;\n  }\n\n  const iright = inflateCategories(right);\n  const categories = left ? [...left, ...iright] : iright;\n  const uniqueCategories = new Set(categories);\n  return [...uniqueCategories.values()];\n}\n","export function createIsDebug(namespaces: string) {\n  const skips: RegExp[] = [];\n  const names: RegExp[] = [];\n\n  for (const part of namespaces.split(/[\\s,]+/)) {\n    if (!part) {\n      continue;\n    }\n\n    const destination = part[0] === '-' ? skips : names;\n    const pattern = part.replace(/^-/, '').replace(/\\*/g, '.*?');\n    destination.push(new RegExp(`^${pattern}$`));\n  }\n\n  return function isDebug(name: string): boolean {\n    // eslint-disable-next-line unicorn/prefer-at\n    if (name[name.length - 1] === '*') {\n      return true;\n    }\n\n    if (skips.some((regex) => regex.test(name))) {\n      return false;\n    }\n\n    if (names.some((regex) => regex.test(name))) {\n      return true;\n    }\n\n    return false;\n  };\n}\n","import { createIsDebug } from './createIsDebug';\n\nexport const isDebug = createIsDebug(process.env.DEBUG || '');\n\nexport const isSelfDebug = () => isDebug('bunyamin');\n","export function flow<T1, T2, R>(f: (x: T1) => T2, g: (x: T2) => R): (x: T1) => R {\n  return (x: T1) => g(f(x));\n}\n","export function isActionable<T>(value: T | (() => T)): value is () => T {\n  return typeof value === 'function';\n}\n","export function isError(value: unknown): value is Error {\n  return value instanceof Error;\n}\n","export function isPromiseLike(maybePromise: unknown): maybePromise is PromiseLike<unknown> {\n  return maybePromise ? typeof (maybePromise as PromiseLike<unknown>).then === 'function' : false;\n}\n","export function isObject(value: unknown): value is object {\n  return value ? typeof value === 'object' : false;\n}\n","export function isUndefined(x: unknown): x is undefined {\n  return x === undefined;\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport type { ThreadID } from '../../types';\n\ntype Message = unknown[];\n\nexport type MessageStackOptions = {\n  /**\n   * A string or any other value to be used as the message when a thread\n   * is popped without any message being pushed previously.\n   * @default '<no begin message>'\n   */\n  noBeginMessage?: unknown;\n};\n\nexport class MessageStack {\n  readonly #simple = new Map<unknown, Message[]>();\n  readonly #complex = new Map<unknown, Map<unknown, Message[]>>();\n  readonly #noBeginMessage: Message;\n\n  constructor(options: MessageStackOptions = {}) {\n    this.#noBeginMessage = [options.noBeginMessage ?? '<no begin message>'];\n  }\n\n  push(tid: ThreadID | undefined, message: unknown[]): void {\n    const stack = this.#ensureStack(tid);\n    stack.push(message);\n  }\n\n  pop(tid: ThreadID | undefined): unknown[] {\n    const stack = this.#ensureStack(tid);\n    return stack.pop() ?? this.#noBeginMessage;\n  }\n\n  #ensureStack(tid: ThreadID | undefined): Message[] {\n    if (!Array.isArray(tid)) {\n      if (!this.#simple.has(tid)) {\n        this.#simple.set(tid, []);\n      }\n\n      return this.#simple.get(tid)!;\n    }\n\n    const [alias, subtid] = tid;\n    if (!this.#complex.has(alias)) {\n      this.#complex.set(alias, new Map());\n    }\n\n    const submap = this.#complex.get(alias)!;\n    if (!submap.has(subtid)) {\n      submap.set(subtid, []);\n    }\n\n    return submap.get(subtid)!;\n  }\n}\n","export class StackTraceError extends Error {\n  constructor() {\n    super('Providing stack trace below:');\n    // eslint-disable-next-line unicorn/custom-error-definition\n    this.name = 'StackTrace';\n  }\n\n  static empty() {\n    return {\n      message: '',\n      stack: '',\n    };\n  }\n}\n","import { deflateCategories, mergeCategories } from './categories';\nimport { isSelfDebug } from '../is-debug';\nimport type { ThreadGroupConfig } from '../streams';\nimport type { ThreadID } from '../types';\nimport { flow, isActionable, isError, isObject, isPromiseLike } from '../utils';\nimport type {\n  BunyaminConfig,\n  BunyaminLogMethod,\n  BunyaminLogRecordFields as UserFields,\n  BunyanLikeLogger,\n  BunyanLogLevel,\n} from './types';\nimport { MessageStack } from './message-stack';\nimport { StackTraceError } from './StackTraceError';\n\nexport class Bunyamin<Logger extends BunyanLikeLogger = BunyanLikeLogger> {\n  public readonly fatal = this.#setupLogMethod('fatal');\n  public readonly error = this.#setupLogMethod('error');\n  public readonly warn = this.#setupLogMethod('warn');\n  public readonly info = this.#setupLogMethod('info');\n  public readonly debug = this.#setupLogMethod('debug');\n  public readonly trace = this.#setupLogMethod('trace');\n\n  readonly #fields: PredefinedFields | undefined;\n  /**\n   * All instances of {@link Bunyamin} must share the same object instance\n   */\n  readonly #shared: SharedBunyaminConfig<Logger>;\n\n  constructor(config: BunyaminConfig<Logger>, fields?: never);\n  constructor(shared: unknown, fields?: unknown) {\n    if (fields === undefined) {\n      const config = shared as BunyaminConfig<Logger>;\n\n      this.#fields = undefined;\n      this.#shared = {\n        ...config,\n        loggerPriority: 0,\n        messageStack: new MessageStack({\n          noBeginMessage: config.noBeginMessage,\n        }),\n      };\n    } else {\n      this.#fields = fields as PredefinedFields;\n      this.#shared = shared as SharedBunyaminConfig<Logger>;\n    }\n  }\n\n  /** @deprecated */\n  get threadGroups(): ThreadGroupConfig[] {\n    return [...(this.#shared.threadGroups ?? [])];\n  }\n\n  get logger(): Logger {\n    return this.#shared.logger;\n  }\n\n  set logger(logger: Logger) {\n    this.useLogger(logger);\n  }\n\n  useLogger(logger: Logger, priority = 0): this {\n    this.#assertNotImmutable();\n    this.#assertNotChild('useLogger');\n\n    const { stack } = isSelfDebug() ? new StackTraceError() : StackTraceError.empty();\n    const currentPriority = this.#shared.loggerPriority;\n    if (priority >= currentPriority) {\n      this.#shared.loggerPriority = priority;\n      this.#shared.logger = logger;\n      stack &&\n        this.#shared.logger.trace(\n          { cat: 'bunyamin' },\n          `bunyamin logger changed (${priority} >= ${currentPriority}), caller was:\\n${stack}`,\n        );\n    } else {\n      stack &&\n        this.#shared.logger.trace(\n          { cat: 'bunyamin' },\n          `bunyamin logger not changed (${priority} < ${currentPriority}), caller was:\\n${stack}`,\n        );\n    }\n\n    return this;\n  }\n\n  useTransform(transformFields: Required<BunyaminConfig<Logger>>['transformFields']): this {\n    this.#assertNotImmutable();\n    this.#assertNotChild('useTransform');\n\n    this.#shared.transformFields = this.#shared.transformFields\n      ? flow(this.#shared.transformFields, transformFields)\n      : transformFields;\n\n    return this;\n  }\n\n  child(overrides?: UserFields): Bunyamin<Logger> {\n    const childContext = this.#mergeFields(this.#fields, this.#transformContext(overrides));\n    return new Bunyamin(this.#shared, childContext as never);\n  }\n\n  #setupLogMethod(level: BunyanLogLevel): BunyaminLogMethod {\n    const logMethod = this.#instant.bind(this, level);\n\n    return Object.assign(logMethod, {\n      begin: this.#begin.bind(this, level),\n      complete: this.#complete.bind(this, level),\n      end: this.#end.bind(this, level),\n    }) as BunyaminLogMethod;\n  }\n\n  #begin(level: BunyanLogLevel, ...arguments_: unknown[]): void {\n    const entry = this.#resolveLogEntry('B', arguments_);\n    this.#beginInternal(level, entry.fields, entry.message);\n  }\n\n  #beginInternal(level: BunyanLogLevel, fields: ResolvedFields, message: unknown[]): void {\n    this.#shared.messageStack.push(fields.tid, message);\n    this.#shared.logger[level](fields, ...message);\n  }\n\n  #end(level: BunyanLogLevel, ...arguments_: unknown[]): void {\n    const entry = this.#resolveLogEntry('E', arguments_);\n    this.#endInternal(level, entry.fields, entry.message);\n  }\n\n  #endInternal(level: BunyanLogLevel, fields: ResolvedFields, customMessage: unknown[]): void {\n    const beginMessage = this.#shared.messageStack.pop(fields.tid);\n    const message = customMessage.length > 0 ? customMessage : beginMessage;\n\n    this.#shared.logger[level](fields, ...(message as unknown[]));\n  }\n\n  #instant(level: BunyanLogLevel, ...arguments_: unknown[]): void {\n    const entry = this.#resolveLogEntry(void 0, arguments_);\n    this.#shared.logger[level](entry.fields, ...entry.message);\n  }\n\n  #complete<T>(\n    level: BunyanLogLevel,\n    maybeContext: unknown,\n    maybeMessage: unknown,\n    maybeAction: T | (() => T),\n  ): T {\n    const action = typeof maybeContext === 'string' ? (maybeMessage as T | (() => T)) : maybeAction;\n    const arguments_ = maybeAction === action ? [maybeContext, maybeMessage] : [maybeContext];\n    const { fields, message } = this.#resolveLogEntry('B', arguments_);\n\n    return this.#completeInternal(level, fields, message, action);\n  }\n\n  #completeInternal<T>(\n    level: BunyanLogLevel,\n    fields: ResolvedFields,\n    message: unknown[],\n    action: T | (() => T),\n  ): T {\n    const end = (customContext: EndContext) => {\n      const endContext = {\n        ...this.#transformContext(customContext),\n        ph: 'E',\n      } as ResolvedFields;\n\n      if (fields.tid !== undefined) {\n        endContext.tid = fields.tid;\n      }\n\n      if (fields.level !== undefined) {\n        endContext.level = fields.level;\n      }\n\n      this.#endInternal(level, endContext, []);\n    };\n\n    let result;\n    this.#beginInternal(level, fields, message);\n    try {\n      result = isActionable(action) ? action() : action;\n\n      if (isPromiseLike(result)) {\n        result.then(\n          () => end({ success: true }),\n          (error) => end({ success: false, err: error }),\n        );\n      } else {\n        end({ success: true });\n      }\n\n      return result;\n    } catch (error: unknown) {\n      end({ success: false, err: error });\n      throw error;\n    }\n  }\n\n  #resolveLogEntry(phase: MaybePhase, arguments_: unknown[]) {\n    const userContext = isObject(arguments_[0]) ? (arguments_[0] as MaybeUserFields) : undefined;\n    const fields = this.#mergeFields(this.#fields, this.#transformContext(userContext));\n    const message: unknown[] =\n      userContext === undefined\n        ? arguments_\n        : isError(arguments_[0]) && arguments_.length === 1\n          ? [arguments_[0].message]\n          : arguments_.slice(1);\n\n    return {\n      fields: this.#resolveFields(fields, phase),\n      message,\n    };\n  }\n\n  #mergeFields(\n    left: PredefinedFields | undefined,\n    right: UserFields | undefined,\n  ): PredefinedFields {\n    const result = {\n      ...left,\n      ...right,\n    };\n\n    const cat = mergeCategories(left?.cat, right?.cat);\n    if (result.cat !== cat) {\n      result.cat = cat;\n    }\n\n    return result as PredefinedFields;\n  }\n\n  #transformContext(maybeError: UserFields | Error | undefined): UserFields | undefined {\n    const fields: UserFields | undefined = isError(maybeError) ? { err: maybeError } : maybeError;\n    return this.#shared.transformFields ? this.#shared.transformFields(fields) : fields;\n  }\n\n  #resolveFields(fields: PredefinedFields, ph: MaybePhase): ResolvedFields {\n    const result: ResolvedFields = fields as ResolvedFields;\n    if (ph !== undefined) {\n      result.ph = ph as never;\n    }\n    if (result.cat !== undefined) {\n      result.cat = deflateCategories(result.cat);\n    }\n    return result;\n  }\n\n  #assertNotChild(methodName: string): void {\n    if (this.#fields) {\n      throw new Error(`Method Bunyamin#${methodName} is not available for child instances`);\n    }\n  }\n\n  #assertNotImmutable(): void {\n    if (this.#shared.immutable) {\n      throw new Error('Cannot change a logger of an immutable instance');\n    }\n  }\n}\n\ntype EndContext = {\n  success?: boolean;\n  err?: unknown;\n};\n\ntype MaybePhase = 'B' | 'E' | undefined;\n\ntype MaybeUserFields = UserFields | Error;\n\ntype PredefinedFields = UserFields & {\n  cat?: string[];\n};\n\ntype ResolvedFields = UserFields & {\n  cat?: string;\n  ph?: 'B' | 'E';\n  tid?: ThreadID;\n  /**\n   * 10 - trace\n   * 20 - debug\n   * 30 - info\n   * 40 - warn\n   * 50 - error\n   * 60 - fatal\n   */\n  level?: number;\n};\n\ntype SharedBunyaminConfig<Logger extends BunyanLikeLogger> = BunyaminConfig<Logger> & {\n  loggerPriority: number;\n  messageStack: MessageStack;\n};\n","import type { BunyanLikeLogger } from '../decorator';\n\nconst noop: any = () => {\n  /* no-op */\n};\n\nexport class NoopLogger implements BunyanLikeLogger {\n  fatal = noop;\n  error = noop;\n  warn = noop;\n  info = noop;\n  debug = noop;\n  trace = noop;\n}\n\nexport function noopLogger(_options?: any) {\n  return new NoopLogger();\n}\n","import type { Bunyamin } from '../decorator';\nimport type { ThreadGroupConfig } from '../streams';\nimport { isSelfDebug } from '../is-debug';\nimport { StackTraceError } from '../decorator/StackTraceError';\n\nexport class ThreadGroups implements Iterable<ThreadGroupConfig> {\n  readonly #debugMode = isSelfDebug();\n  readonly #getBunyamin: () => Bunyamin;\n  readonly #groups = new Map<string, ThreadGroupConfig>();\n\n  constructor(getBunyamin: () => Bunyamin) {\n    this.#getBunyamin = getBunyamin;\n    this.#groups = new Map();\n  }\n\n  add(group: ThreadGroupConfig) {\n    if (this.#debugMode) {\n      if (this.#groups.has(group.id)) {\n        this.#logAddition(group, 'overwritten');\n      } else {\n        this.#logAddition(group, 'added');\n      }\n    }\n\n    this.#groups.set(group.id, group);\n    return this;\n  }\n\n  [Symbol.iterator]() {\n    return this.#groups.values();\n  }\n\n  #logAddition(group: ThreadGroupConfig, action: string) {\n    const { stack } = new StackTraceError();\n    this.#getBunyamin().trace(\n      { cat: 'bunyamin' },\n      `thread group ${action}: ${group.id} (${group.displayName})\\n\\n${stack}`,\n    );\n  }\n}\n","/* eslint-disable prefer-const */\nimport { Bunyamin } from './decorator';\nimport { noopLogger } from './noopLogger';\nimport { isSelfDebug } from './is-debug';\nimport { ThreadGroups } from './thread-groups';\n\ntype Realm = {\n  bunyamin: Bunyamin;\n  nobunyamin: Bunyamin;\n  threadGroups: ThreadGroups;\n};\n\nfunction create() {\n  let bunyamin: Bunyamin;\n  let nobunyamin: Bunyamin;\n\n  const selfDebug = isSelfDebug();\n  const threadGroups = new ThreadGroups(() => bunyamin);\n\n  bunyamin = new Bunyamin({\n    logger: noopLogger(),\n    threadGroups,\n  });\n\n  nobunyamin = new Bunyamin({\n    immutable: true,\n    logger: noopLogger(),\n    threadGroups,\n  });\n\n  if (selfDebug) {\n    bunyamin.trace({ cat: 'bunyamin' }, 'bunyamin global instance created');\n  }\n\n  return { bunyamin, nobunyamin, threadGroups };\n}\n\nfunction getCached(): Realm | undefined {\n  const result = (globalThis as any).__BUNYAMIN__;\n\n  if (isSelfDebug() && result) {\n    result.bunyamin.trace({ cat: 'bunyamin' }, 'bunyamin global instance retrieved from cache');\n  }\n\n  return result;\n}\n\nfunction setCached(realm: Realm) {\n  (globalThis as any).__BUNYAMIN__ = realm;\n  return realm;\n}\n\nexport default setCached(getCached() ?? create());\n","import { isUndefined } from '../../../utils';\n\nconst NIL = Symbol('NIL');\n\nexport class ThreadDispatcher {\n  readonly #stacks: number[] = [];\n  readonly #threads: unknown[] = [];\n  readonly #countMax: number;\n\n  constructor(\n    public readonly name: string,\n    public readonly strict: boolean,\n    public readonly min: number,\n    public readonly max: number,\n  ) {\n    this.#countMax = max - min + 1;\n  }\n\n  begin(id: unknown = NIL): number | Error {\n    const tid = this.#findTID(id);\n    if (tid === -1) {\n      return this.#error();\n    }\n\n    this.#threads[tid] = id;\n    this.#stacks[tid] = (this.#stacks[tid] || 0) + 1;\n\n    return this.#transposeTID(tid);\n  }\n\n  resolve(id: unknown = NIL): number | Error {\n    const tid = this.#findTID(id);\n    if (tid === -1) {\n      return this.#error();\n    }\n\n    return this.#transposeTID(tid);\n  }\n\n  end(id: unknown = NIL): number | Error {\n    const tid = this.#findTID(id);\n    if (tid === -1) {\n      return this.#error();\n    }\n\n    if (this.#stacks[tid] && --this.#stacks[tid] === 0) {\n      delete this.#threads[tid];\n    }\n\n    return this.#transposeTID(tid);\n  }\n\n  #findTID(id: unknown): number {\n    let tid = this.#threads.indexOf(id);\n    if (tid === -1) {\n      // Try to find a recently released slot in the array:\n      tid = this.#threads.findIndex(isUndefined);\n    }\n\n    if (tid === -1) {\n      tid = this.#threads.length;\n    }\n\n    return tid < this.#countMax ? tid : -1;\n  }\n\n  #transposeTID(tid: number): number {\n    return this.min + tid;\n  }\n\n  #error(): number | Error {\n    const count = this.#countMax;\n    const threads = count > 1 ? `threads` : `thread`;\n\n    return this.strict\n      ? new Error(`Exceeded limit of ${count} concurrent ${threads} in group \"${this.name}\"`)\n      : this.max;\n  }\n}\n","import IntervalTree from '@flatten-js/interval-tree';\n\nimport type { ThreadAlias, ThreadID } from '../../../types';\nimport { ThreadDispatcher } from './ThreadDispatcher';\nimport type { ThreadGroupConfig } from './ThreadGroupConfig';\n\nexport type ThreadGroupDispatcherConfig = {\n  defaultThreadName: string;\n  maxConcurrency: number;\n  strict: boolean;\n  threadGroups: Iterable<ThreadGroupConfig>;\n};\n\nexport class ThreadGroupDispatcher {\n  readonly #strict: boolean;\n  readonly #dispatchers: Record<string, ThreadDispatcher> = {};\n  readonly #maxConcurrency: number;\n  readonly #defaultThreadName: string;\n  readonly #threadGroups: Iterable<ThreadGroupConfig>;\n  readonly #names: IntervalTree = new IntervalTree();\n\n  #freeThreadId = 1;\n  #initialized = false;\n\n  constructor(options: ThreadGroupDispatcherConfig) {\n    this.#defaultThreadName = options.defaultThreadName;\n    this.#maxConcurrency = options.maxConcurrency;\n    this.#strict = options.strict;\n    this.#threadGroups = options.threadGroups;\n  }\n\n  name(tid: number): string | undefined {\n    this.#ensureInitialized();\n\n    if (tid === 0) {\n      return this.#defaultThreadName;\n    }\n\n    return this.#names.search([tid, tid])[0];\n  }\n\n  resolve(ph: string | undefined, tid: ThreadID | undefined): number | Error {\n    this.#ensureInitialized();\n\n    if (tid == null) {\n      return 0;\n    }\n\n    if (typeof tid === 'number') {\n      return tid;\n    }\n\n    const dispatcher = this.#resolveDispatcher(tid as ThreadAlias);\n    if (!dispatcher) {\n      return new Error(`Unknown thread group \"${this.#resolveAlias(tid)}\"`);\n    }\n\n    const id = this.#resolveId(tid);\n\n    switch (ph) {\n      case 'B': {\n        return dispatcher.begin(id);\n      }\n      case 'E': {\n        return dispatcher.end(id);\n      }\n      default: {\n        return dispatcher.resolve(id);\n      }\n    }\n  }\n\n  #ensureInitialized() {\n    if (!this.#initialized) {\n      this.#initialized = true;\n\n      for (const group of this.#threadGroups) {\n        this.#registerThreadGroup(group);\n      }\n    }\n  }\n\n  #registerThreadGroup(config: ThreadGroupConfig): this {\n    const maxConcurrency = config.maxConcurrency ?? this.#maxConcurrency;\n    const min = this.#freeThreadId;\n    const max = min + maxConcurrency - 1;\n\n    this.#dispatchers[config.id] = new ThreadDispatcher(config.displayName, this.#strict, min, max);\n    this.#names.insert([min, max], config.displayName);\n    this.#freeThreadId = max + 1;\n\n    return this;\n  }\n\n  #resolveDispatcher(threadAlias: ThreadAlias): ThreadDispatcher | undefined {\n    const groupName = typeof threadAlias === 'string' ? threadAlias : threadAlias[0];\n    return this.#ensureGroupDispatcher(groupName);\n  }\n\n  #resolveAlias(threadAlias: ThreadAlias | undefined): unknown {\n    return Array.isArray(threadAlias) ? threadAlias[0] : threadAlias;\n  }\n\n  #resolveId(threadAlias: ThreadAlias | undefined): unknown {\n    return threadAlias === undefined || typeof threadAlias === 'string'\n      ? undefined\n      : threadAlias[1];\n  }\n\n  #ensureGroupDispatcher(threadGroup: string): ThreadDispatcher | undefined {\n    if (!this.#dispatchers[threadGroup] && !this.#strict) {\n      this.#registerThreadGroup({ id: threadGroup, displayName: threadGroup });\n    }\n\n    return this.#dispatchers[threadGroup];\n  }\n}\n","/* eslint-disable unicorn/switch-case-braces,unicorn/prevent-abbreviations,@typescript-eslint/no-explicit-any*/\nimport type {\n  AsyncEvent,\n  CompleteEvent,\n  CounterEvent,\n  DurationBeginEvent,\n  DurationEndEvent,\n  Event,\n  EventWithStack,\n  InstantEvent,\n  MetadataEvent,\n} from 'trace-event-lib';\n\n// TODO: optimize args - they will be often empty objects\n\nexport function bunyan2trace(record: any): Event {\n  if (!record.ph) {\n    return buildFallbackEvent(record);\n  }\n\n  switch (record.ph) {\n    case 'B':\n      return buildDurationBeginEvent(record);\n    case 'E':\n      return buildDurationEndEvent(record);\n    case 'i':\n      return buildInstantEvent(record);\n    case 'b':\n    case 'e':\n    case 'n':\n      return buildAsyncEvent(record);\n    case 'X':\n      return buildCompleteEvent(record);\n    case 'C':\n      return buildCounterEvent(record);\n    case 'M':\n      return buildMetadataEvent(record);\n    default:\n      return buildFallbackEvent(record);\n  }\n}\n\nfunction buildAsyncEvent(record: any): AsyncEvent {\n  const event = bunyan2trace(record) as AsyncEvent;\n  return moveProperties(event.args!, event, ['id', 'id2', 'scope']);\n}\n\nfunction buildCompleteEvent(record: any): CompleteEvent {\n  const event = extractEventWithStack(record) as CompleteEvent;\n  return moveProperties(event.args!, event, ['dur', 'tdur', 'esf', 'estack']);\n}\n\nfunction buildCounterEvent(record: any): CounterEvent {\n  const event = bunyan2trace(record) as CounterEvent;\n  delete event.cat;\n  return moveProperties(event.args!, event, ['id']);\n}\n\nfunction buildDurationBeginEvent(record: any): DurationBeginEvent {\n  return extractEventWithStack(record) as DurationBeginEvent;\n}\n\nfunction buildDurationEndEvent(record: any): DurationEndEvent {\n  const event = extractEventWithStack(record) as DurationEndEvent;\n  delete event.name;\n  delete event.cat;\n  return event;\n}\n\nfunction buildMetadataEvent(record: any): MetadataEvent {\n  const event = bunyan2trace(record) as MetadataEvent;\n  delete event.cat;\n  return event;\n}\n\nfunction buildInstantEvent(record: any): InstantEvent {\n  const event = extractEventWithStack(record) as InstantEvent;\n  const args = moveProperties(event.args!, event, ['s']);\n  if (args.s === 'g' || args.s === 'p') {\n    delete event.sf;\n    delete event.stack;\n  }\n\n  return event;\n}\n\nfunction buildFallbackEvent(record: any): InstantEvent {\n  const event = buildInstantEvent(record);\n  event.ph = 'i';\n  return event;\n}\n\nfunction extractTraceEvent(record: any): Event {\n  const {\n    cat,\n    cname,\n    ph,\n    tts,\n    pid,\n    tid,\n    time,\n    msg: name,\n    name: _processName,\n    hostname: _hostname,\n    ...args\n  } = record;\n\n  const ts = new Date(time).getTime() * 1e3;\n\n  return {\n    cat,\n    cname,\n    ph,\n    ts,\n    tts,\n    pid,\n    tid,\n    name,\n    args,\n  } as Event;\n}\n\nfunction extractEventWithStack(record: any): EventWithStack {\n  const event = extractTraceEvent(record) as EventWithStack;\n  return moveProperties(event.args!, event, ['sf', 'stack']);\n}\n\nfunction moveProperties<T extends Record<string, any>>(\n  source: Record<string, any>,\n  target: T,\n  keys: (keyof T)[],\n): T {\n  for (const key of keys) {\n    if (source[key as string] !== undefined) {\n      target[key] = source[key as string];\n      delete source[key as string];\n    }\n  }\n\n  return target;\n}\n","import type { Event } from 'trace-event-lib';\nimport * as TEL from 'trace-event-lib';\nimport type { Transform } from 'node:stream';\n\nexport class StreamEventBuilder extends TEL.AbstractEventBuilder {\n  constructor(protected readonly stream: Transform) {\n    super();\n  }\n\n  public send(event: Event) {\n    this.stream.push(event);\n  }\n}\n","import type { ThreadGroupConfig } from '../threads';\nimport type { TraceEventStreamOptions } from './TraceEventStreamOptions';\n\nexport function normalizeOptions(\n  options: TraceEventStreamOptions,\n): Required<TraceEventStreamOptions> {\n  options.ignoreFields = options.ignoreFields ?? ['v', 'hostname', 'level', 'name'];\n  options.defaultThreadName = options.defaultThreadName ?? 'Main Thread';\n  options.maxConcurrency = options.maxConcurrency ?? 100;\n  options.strict = options.strict ?? false;\n  options.threadGroups = Array.isArray(options.threadGroups)\n    ? options.threadGroups.map((threadGroup, index) =>\n        typeof threadGroup === 'string'\n          ? {\n              id: threadGroup,\n              displayName: threadGroup,\n            }\n          : validateThreadGroup(threadGroup, index),\n      )\n    : options.threadGroups ?? [];\n\n  if (options.maxConcurrency < 1) {\n    throw new Error(`maxConcurrency must be at least 1, got ${options.maxConcurrency}`);\n  }\n\n  return options as Required<TraceEventStreamOptions>;\n}\n\nfunction validateThreadGroup(threadGroup: ThreadGroupConfig, index: number) {\n  if (!threadGroup.id) {\n    throw new Error('Missing thread group ID in thread group at index ' + index);\n  }\n\n  if (threadGroup.maxConcurrency != null) {\n    if (threadGroup.maxConcurrency < 1) {\n      throw new Error(\n        `Max concurrency (${threadGroup.id} -> ${threadGroup.maxConcurrency}) has to be a positive integer`,\n      );\n    }\n\n    if (threadGroup.maxConcurrency > 1e6) {\n      throw new Error(\n        `Max concurrency (${threadGroup.id} -> ${threadGroup.maxConcurrency}) cannot be greater than 1,000,000`,\n      );\n    }\n  }\n\n  return threadGroup;\n}\n","import { Transform } from 'node:stream';\n\nimport { isError } from '../../utils';\n\nimport { ThreadGroupDispatcher } from './threads';\nimport type { ThreadGroupConfig } from './threads';\nimport { bunyan2trace } from './bunyan2trace';\nimport { StreamEventBuilder } from './StreamEventBuilder';\nimport type { TraceEventStreamOptions } from './options/TraceEventStreamOptions';\nimport { normalizeOptions } from './options/normalizeOptions';\n\n// TODO: add tests\nexport class BunyanTraceEventStream extends Transform {\n  readonly #knownTids = new Set<number>();\n  readonly #threadGroupDispatcher: ThreadGroupDispatcher;\n  readonly #builder = new StreamEventBuilder(this);\n  readonly #ignoreFields: string[];\n\n  #started = false;\n\n  constructor(userOptions: TraceEventStreamOptions = {}) {\n    super({ objectMode: true });\n\n    const options = normalizeOptions(userOptions);\n    this.#ignoreFields = options.ignoreFields;\n    this.#threadGroupDispatcher = new ThreadGroupDispatcher({\n      strict: options.strict ?? false,\n      defaultThreadName: options.defaultThreadName ?? 'Main Thread',\n      maxConcurrency: options.maxConcurrency ?? 100,\n      // Lazy to add a `NormalizedOptions...` type, so we just cast it here.\n      threadGroups: options.threadGroups as Iterable<ThreadGroupConfig>,\n    });\n  }\n\n  _transform(\n    record: unknown,\n    _encoding: string,\n    callback: (error?: Error | null, data?: unknown) => void,\n  ) {\n    const json = typeof record === 'string' ? JSON.parse(record) : record;\n    const event = json && bunyan2trace(json);\n\n    if (event.args) {\n      for (const field of this.#ignoreFields) {\n        delete event.args[field];\n      }\n    }\n\n    if (!this.#started) {\n      this.#started = true;\n      this.#builder.metadata({\n        pid: event.pid,\n        ts: event.ts,\n        name: 'process_name',\n        args: { name: json.name },\n      });\n    }\n\n    const tid = (event.tid = this.#threadGroupDispatcher.resolve(event.ph, event.tid));\n    if (isError(tid)) {\n      callback(tid);\n      return;\n    }\n\n    if (!this.#knownTids.has(tid)) {\n      this.#knownTids.add(tid);\n\n      const threadName = this.#threadGroupDispatcher.name(tid);\n      if (threadName) {\n        this.#builder.metadata({\n          pid: event.pid,\n          tid: event.tid,\n          ts: event.ts,\n          name: 'thread_name',\n          args: { name: threadName },\n        });\n      }\n    }\n\n    this.#builder.send(event);\n    callback(null);\n  }\n}\n","import fs from 'node:fs';\nimport type { Readable } from 'node:stream';\nimport { Transform } from 'node:stream';\n// eslint-disable-next-line import/extensions\nimport StreamArray from 'stream-json/streamers/StreamArray.js';\n\nexport function jsonlReadFile(filePath: string): Readable {\n  return fs\n    .createReadStream(filePath, { encoding: 'utf8' })\n    .pipe(StreamArray.withParser())\n    .pipe(new MapValues(filePath));\n}\n\nclass MapValues extends Transform {\n  constructor(protected readonly filePath: string) {\n    super({ objectMode: true });\n  }\n\n  _transform(\n    record: any,\n    _encoding: string,\n    callback: (error?: Error | null, data?: unknown) => void,\n  ) {\n    this.push({\n      ...record,\n      filePath: this.filePath,\n    } as JSONLEntry);\n\n    callback();\n  }\n}\n\nexport type JSONLEntry<T = unknown> = {\n  filePath: string;\n  key: number;\n  value: T;\n};\n","import fs from 'node:fs';\nimport { Writable } from 'node:stream';\n\nexport function jsonlWriteFile(filePath: string): Writable {\n  return new JSONLFileStream({ filePath });\n}\n\ntype JSONLFileStreamOptions = {\n  filePath: string;\n};\n\ntype ErrorCallback = (error?: Error | null) => void;\n\n// Custom writable stream to append JSON objects\nclass JSONLFileStream extends Writable {\n  private readonly _filePath: string;\n  private _fileDescriptor = Number.NaN;\n  private _offset = Number.NaN;\n  private _counter = 0;\n\n  constructor(options: JSONLFileStreamOptions) {\n    super({ objectMode: true });\n\n    this._filePath = options.filePath;\n  }\n\n  _construct(callback: ErrorCallback) {\n    this._offset = 0;\n    this._fileDescriptor = fs.openSync(this._filePath, 'wx');\n\n    const content = Buffer.from('[]\\n');\n    fs.write(this._fileDescriptor, content, this._offset, content.length, (error) => {\n      if (error) {\n        callback(error);\n      } else {\n        this._offset += 1;\n        callback();\n      }\n    });\n  }\n\n  _write(chunk: unknown, _: unknown, callback: ErrorCallback) {\n    const content =\n      this._counter++ > 0 ? `,\\n${JSON.stringify(chunk)}]\\n` : `${JSON.stringify(chunk)}]\\n`;\n    const buffer = Buffer.from(content);\n\n    fs.write(\n      this._fileDescriptor,\n      buffer,\n      0,\n      buffer.length,\n      this._offset,\n      (error: Error | null, bytesWritten: number) => {\n        if (error) {\n          callback(error);\n        } else {\n          this._offset += bytesWritten - 2;\n          callback();\n        }\n      },\n    );\n  }\n\n  _final(callback: ErrorCallback) {\n    fs.close(this._fileDescriptor, callback);\n  }\n}\n","import type { LeafNode, TreeNode } from './TreeNode';\n\nexport class ArrayTreeNode<Value = unknown, ChildNode extends LeafNode<any> = LeafNode>\n  implements TreeNode<Value, ChildNode>\n{\n  index = -1;\n  parent?: TreeNode<any, this>;\n\n  readonly #children: ChildNode[] = [];\n  readonly #map = new Map<unknown, ChildNode>();\n\n  constructor(public value: Value) {}\n\n  get size() {\n    return this.#children.length;\n  }\n\n  [Symbol.iterator]() {\n    return this.#children[Symbol.iterator]();\n  }\n\n  findByValue(value: unknown): ChildNode | undefined {\n    return this.#map.get(value);\n  }\n\n  appendChild(node: ChildNode): ChildNode {\n    node.index = this.size;\n    node.parent = this as TreeNode;\n    this.#children.push(node);\n    this.#map.set(node.value, node);\n    return node;\n  }\n}\n","import type { LeafNode, TreeNode } from './TreeNode';\n\nexport class RangeTreeNode<Value> implements LeafNode<Value> {\n  index = -1;\n  parent?: TreeNode<any, this>;\n\n  #min = Number.POSITIVE_INFINITY;\n  #max = Number.NEGATIVE_INFINITY;\n\n  constructor(public value: Value) {}\n\n  get min() {\n    return this.#min;\n  }\n\n  get max() {\n    return this.#max;\n  }\n\n  get size() {\n    return this.#max - this.#min + 1;\n  }\n\n  protected add(child: number) {\n    if (child < this.#min) {\n      this.#min = child;\n    }\n    if (child > this.#max) {\n      this.#max = child;\n    }\n  }\n}\n","import { RangeTreeNode } from '../abstract';\n\nexport class FileNode extends RangeTreeNode<string> {\n  rank?: number;\n  offset?: number;\n\n  addTID(tid: number): void {\n    return super.add(tid);\n  }\n\n  transpose(tid: number): number {\n    if (tid < this.min || tid > this.max) {\n      throw new Error(`Value ${tid} not found in range: [${this.min}, ${this.max}]`);\n    }\n\n    return (this.offset ?? 0) + (tid - this.min);\n  }\n}\n","import { ArrayTreeNode } from '../abstract';\nimport { FileNode } from './FileNode';\n\nexport class PIDNode extends ArrayTreeNode<number, FileNode> {\n  addFile(file: string): FileNode {\n    /* eslint-disable-next-line unicorn/prefer-dom-node-append */\n    return this.findByValue(file) ?? this.appendChild(new FileNode(file));\n  }\n}\n","import { ArrayTreeNode } from '../abstract';\nimport { PIDNode } from './PIDNode';\n\nexport class RootNode extends ArrayTreeNode<never, PIDNode> {\n  constructor() {\n    super(undefined as never);\n  }\n\n  addPID(pid: number): PIDNode {\n    /* eslint-disable-next-line unicorn/prefer-dom-node-append */\n    return this.findByValue(pid) ?? this.appendChild(new PIDNode(pid));\n  }\n\n  rank() {\n    let index = 0;\n    let offset = 0;\n\n    for (const pid of this) {\n      for (const file of pid) {\n        file.rank = index++;\n        file.offset = offset;\n        offset += file.size;\n      }\n    }\n  }\n}\n","import { RootNode } from './tree';\nimport type { Resolver } from './Resolver';\n\nexport class PIDResolver implements Resolver {\n  protected tree = new RootNode();\n\n  add(pid: number, _filePath: string, tid: number) {\n    this.tree.addPID(pid).addFile('').addTID(tid);\n  }\n\n  finalize() {\n    this.tree.rank();\n  }\n\n  resolvePid(_filePath: string, pid: number): number {\n    return pid;\n  }\n\n  resolveTid(_filePath: string, pid: number, tid: number): number {\n    const $pid = this.tree.findByValue(pid);\n    const $file = $pid?.findByValue('');\n    return $file?.transpose(tid) ?? Number.NaN;\n  }\n}\n","import { PIDResolver } from './PIDResolver';\n\nexport class FilePIDResolver extends PIDResolver {\n  add(pid: number, filePath: string, tid: number) {\n    this.tree.addPID(pid).addFile(filePath).addTID(tid);\n  }\n\n  resolvePid(filePath: string, pid: number): number {\n    const $pid = this.tree.findByValue(pid);\n    const $file = $pid?.findByValue(filePath);\n    return ($file?.rank ?? Number.NaN) + 1;\n  }\n\n  resolveTid(filePath: string, pid: number, tid: number): number {\n    const $pid = this.tree.findByValue(pid);\n    const $file = $pid?.findByValue(filePath);\n    return $file?.transpose(tid) ?? Number.NaN;\n  }\n}\n","import type { Readable } from 'node:stream';\nimport type { TraceEvent } from 'trace-event-lib';\nimport multiSortStream from 'multi-sort-stream';\n\nimport type { JSONLEntry } from '../../jsonl';\n\nexport function multisort(streams: Readable[]): Readable {\n  return multiSortStream(streams, comparator);\n}\n\nfunction comparator(a: unknown, b: unknown): number {\n  const { value: aa } = a as JSONLEntry<TraceEvent>;\n  const { value: bb } = b as JSONLEntry<TraceEvent>;\n\n  return aa.ts < bb.ts ? -1 : aa.ts > bb.ts ? 1 : 0;\n}\n","import { Writable } from 'node:stream';\nimport type { TraceEvent } from 'trace-event-lib';\nimport type { Resolver } from '../resolvers';\nimport type { JSONLEntry } from '../../jsonl';\n\nexport class TraceAnalyze extends Writable {\n  readonly #resolver: Resolver;\n\n  constructor(resolver: Resolver) {\n    super({\n      objectMode: true,\n      highWaterMark: Number.MAX_SAFE_INTEGER,\n    });\n\n    this.#resolver = resolver;\n  }\n\n  _write(\n    chunk: unknown,\n    _encoding: string,\n    callback: (error?: Error | null, data?: unknown) => void,\n  ) {\n    const entry = chunk as JSONLEntry<TraceEvent>;\n    this.#resolver.add(entry.value.pid, entry.filePath, entry.value.tid);\n    callback();\n  }\n\n  _final(callback: (error?: Error | null) => void) {\n    this.#resolver.finalize();\n    callback();\n  }\n}\n","import { Transform } from 'node:stream';\nimport type { TraceEvent } from 'trace-event-lib';\n\nimport type { Resolver } from '../resolvers';\nimport type { JSONLEntry } from '../../jsonl';\n\nexport class TraceMerge extends Transform {\n  readonly #resolverPromise: Promise<Resolver>;\n  #resolver?: Resolver;\n\n  constructor(resolverPromise: Promise<Resolver>) {\n    super({\n      objectMode: true,\n      highWaterMark: Number.MAX_SAFE_INTEGER,\n    });\n\n    this.#resolverPromise = resolverPromise;\n  }\n\n  _transform(\n    chunk: unknown,\n    _encoding: string,\n    callback: (error?: Error | null, data?: unknown) => void,\n  ) {\n    if (this.#resolver) {\n      const entry = chunk as JSONLEntry<TraceEvent>;\n      const output = { ...entry.value };\n      if (output.pid != null) {\n        output.pid = this.#resolver.resolvePid(entry.filePath, entry.value.pid);\n      }\n      if (output.tid != null) {\n        output.tid = this.#resolver.resolveTid(entry.filePath, entry.value.pid, entry.value.tid);\n      }\n      this.push(output);\n      callback();\n    } else {\n      this.#resolverPromise.then(\n        (resolver) => {\n          this.#resolver = resolver;\n          this._transform(chunk, _encoding, callback);\n        },\n        (error) => {\n          callback(error);\n        },\n      );\n    }\n  }\n}\n","import type { Readable } from 'node:stream';\n\nimport { jsonlReadFile } from '../jsonl';\nimport type { Resolver } from './resolvers';\nimport { FilePIDResolver, PIDResolver } from './resolvers';\nimport { multisort, TraceAnalyze, TraceMerge } from './transforms';\n\nexport type TraceMergeOptions = {\n  mode: 'pid' | 'fpid';\n};\n\nexport function traceMerge(filePaths: string[], options?: TraceMergeOptions): Readable {\n  const streams = filePaths.map((filePath) => jsonlReadFile(filePath));\n  const resolver = makeResolver(options);\n  const $resolver = makeDeferred<Resolver>();\n  const analyze = new TraceAnalyze(resolver)\n    .on('error', (error) => $resolver.reject(error))\n    .on('finish', () => $resolver.resolve(resolver));\n\n  const merge = new TraceMerge($resolver.promise);\n\n  const sorted = multisort(streams);\n  sorted.pipe(analyze);\n  return sorted.pipe(merge);\n}\n\nfunction makeResolver(options?: TraceMergeOptions): Resolver {\n  return options?.mode === 'fpid' ? new FilePIDResolver() : new PIDResolver();\n}\n\nfunction makeDeferred<T>() {\n  let resolve: (value: T) => void;\n  let reject: (reason?: unknown) => void;\n  const promise = new Promise<T>((_resolve, _reject) => {\n    resolve = _resolve;\n    reject = _reject;\n  });\n\n  return {\n    promise: promise,\n    resolve: resolve!,\n    reject: reject!,\n  };\n}\n","import type { Transform } from 'node:stream';\nimport { BunyanTraceEventStream, jsonlWriteFile } from './streams';\nimport type { TraceEventStreamOptions } from './streams';\n\nexport function traceEventStream(\n  options: TraceEventStreamOptions & { filePath: string },\n): Transform {\n  const jsonl = jsonlWriteFile(options.filePath);\n  const stream = new BunyanTraceEventStream(options);\n  stream.pipe(jsonl);\n  return stream;\n}\n","import type { Readable } from 'node:stream';\nimport type { TraceMergeOptions } from './streams';\nimport { jsonlWriteFile, traceMerge } from './streams';\n\nexport function uniteTraceEvents(sourcePaths: string[], options?: TraceMergeOptions): Readable {\n  return traceMerge(sourcePaths, options);\n}\n\nexport async function uniteTraceEventsToFile(\n  sourcePaths: string[],\n  destinationPath: string,\n  options?: TraceMergeOptions,\n) {\n  return new Promise((resolve, reject) => {\n    uniteTraceEvents(sourcePaths, options)\n      .pipe(jsonlWriteFile(destinationPath))\n      .on('finish', resolve)\n      .on('error', reject);\n  });\n}\n","import type { BunyaminConfig, BunyanLikeLogger } from './decorator';\nimport { Bunyamin } from './decorator';\n\nexport * from './decorator/types';\nexport type { Bunyamin } from './decorator';\n\nexport function wrapLogger<Logger extends BunyanLikeLogger>(\n  options: BunyaminConfig<Logger>,\n): Bunyamin<Logger>;\nexport function wrapLogger<Logger extends BunyanLikeLogger>(\n  logger: Logger,\n  options?: Omit<BunyaminConfig<Logger>, 'logger'>,\n): Bunyamin<Logger>;\nexport function wrapLogger<Logger extends BunyanLikeLogger>(\n  maybeLogger: any,\n  maybeConfig?: unknown,\n): Bunyamin<Logger> {\n  const logger = (maybeLogger.logger ?? maybeLogger) as Logger;\n  const config = (logger === maybeLogger ? maybeConfig : maybeLogger) as\n    | BunyaminConfig<Logger>\n    | undefined;\n\n  return new Bunyamin({\n    ...config,\n    logger,\n  });\n}\n","import realm from './realm';\n\nexport * from './noopLogger';\nexport * from './traceEventStream';\nexport * from './uniteTraceEvents';\nexport * from './wrapLogger';\nexport { isDebug } from './is-debug';\n\nexport const bunyamin = realm.bunyamin;\nexport const nobunyamin = realm.nobunyamin;\nexport const threadGroups = realm.threadGroups;\n\nexport default bunyamin;\n"],"names":["deflateCategories","cat","undefined","Array","isArray","filter","Boolean","join","String","inflateCategories","split","mergeCategories","left","right","iright","categories","uniqueCategories","Set","values","createIsDebug","namespaces","skips","names","part","destination","pattern","replace","push","RegExp","isDebug","name","length","some","regex","test","process","env","DEBUG","isSelfDebug","flow","f","g","x","isActionable","value","isError","Error","isPromiseLike","maybePromise","then","isObject","isUndefined","MessageStack","constructor","options","_options$noBeginMessa","Object","defineProperty","_ensureStack","_ensureStack2","_simple","writable","Map","_complex","_noBeginMessage","_classPrivateFieldLooseBase","noBeginMessage","tid","message","stack","pop","_stack$pop","has","set","get","alias","subtid","submap","StackTraceError","empty","_fields","_classPrivateFieldLooseKey","_shared","_setupLogMethod","_begin","_beginInternal","_end","_endInternal","_instant","_complete","_completeInternal","_resolveLogEntry","_mergeFields","_transformContext","_resolveFields","_assertNotChild","_assertNotImmutable","Bunyamin","shared","fields","_assertNotImmutable2","_assertNotChild2","_resolveFields2","_transformContext2","_mergeFields2","_resolveLogEntry2","_completeInternal2","_complete2","_instant2","_endInternal2","_end2","_beginInternal2","_begin2","_setupLogMethod2","fatal","error","warn","info","debug","trace","config","loggerPriority","messageStack","threadGroups","_classPrivateFieldLoo","logger","useLogger","priority","currentPriority","useTransform","transformFields","child","overrides","childContext","level","logMethod","bind","assign","begin","complete","end","arguments_","entry","customMessage","beginMessage","maybeContext","maybeMessage","maybeAction","action","customContext","endContext","ph","result","success","err","phase","userContext","slice","maybeError","methodName","immutable","noop","NoopLogger","noopLogger","_options","_debugMode","_getBunyamin","_groups","_logAddition","ThreadGroups","getBunyamin","_logAddition2","add","group","id","Symbol","iterator","displayName","create","bunyamin","nobunyamin","selfDebug","getCached","globalThis","__BUNYAMIN__","setCached","realm","_getCached","NIL","_stacks","_threads","_countMax","_findTID","_transposeTID","_error","ThreadDispatcher","strict","min","max","_error2","_transposeTID2","_findTID2","resolve","indexOf","findIndex","count","threads","_strict","_dispatchers","_maxConcurrency","_defaultThreadName","_threadGroups","_names","_freeThreadId","_initialized","_ensureInitialized","_registerThreadGroup","_resolveDispatcher","_resolveAlias","_resolveId","_ensureGroupDispatcher","ThreadGroupDispatcher","_ensureGroupDispatcher2","_resolveId2","_resolveAlias2","_resolveDispatcher2","_registerThreadGroup2","_ensureInitialized2","IntervalTree","defaultThreadName","maxConcurrency","search","dispatcher","_config$maxConcurrenc","insert","threadAlias","groupName","threadGroup","bunyan2trace","record","buildFallbackEvent","buildDurationBeginEvent","buildDurationEndEvent","buildInstantEvent","buildAsyncEvent","buildCompleteEvent","buildCounterEvent","buildMetadataEvent","event","moveProperties","args","extractEventWithStack","s","sf","extractTraceEvent","cname","tts","pid","time","msg","_processName","hostname","_hostname","ts","Date","getTime","source","target","keys","key","StreamEventBuilder","TEL","AbstractEventBuilder","stream","send","normalizeOptions","_options$ignoreFields","_options$defaultThrea","_options$maxConcurren","_options$strict","_options$threadGroups","ignoreFields","map","index","validateThreadGroup","_knownTids","_threadGroupDispatcher","_builder","_ignoreFields","_started","BunyanTraceEventStream","Transform","userOptions","objectMode","_transform","_encoding","callback","json","JSON","parse","field","metadata","threadName","jsonlReadFile","filePath","fs","createReadStream","encoding","pipe","StreamArray","withParser","MapValues","jsonlWriteFile","JSONLFileStream","Writable","_filePath","_fileDescriptor","Number","NaN","_offset","_counter","_construct","openSync","content","Buffer","from","write","_write","chunk","_","stringify","buffer","bytesWritten","_final","close","ArrayTreeNode","parent","_children","_map","size","findByValue","appendChild","node","RangeTreeNode","_min","POSITIVE_INFINITY","_max","NEGATIVE_INFINITY","FileNode","rank","offset","addTID","transpose","_this$offset","PIDNode","addFile","file","_this$findByValue","RootNode","addPID","PIDResolver","tree","finalize","resolvePid","resolveTid","_$file$transpose","$pid","$file","FilePIDResolver","_$file$rank","multisort","streams","multiSortStream","comparator","a","b","aa","bb","_resolver","TraceAnalyze","resolver","highWaterMark","MAX_SAFE_INTEGER","_resolverPromise","TraceMerge","resolverPromise","output","traceMerge","filePaths","makeResolver","$resolver","makeDeferred","analyze","on","reject","merge","promise","sorted","mode","Promise","_resolve","_reject","traceEventStream","jsonl","uniteTraceEvents","sourcePaths","uniteTraceEventsToFile","destinationPath","wrapLogger","maybeLogger","maybeConfig","_maybeLogger$logger"],"mappings":"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"}