{
  "version": 3,
  "sources": ["../src/index.ts", "../src/log.ts", "../src/utils/local-storage.ts", "../src/utils/formatters.ts", "../src/utils/color.ts", "../src/utils/autobind.ts", "../src/utils/assert.ts", "../src/utils/hi-res-timestamp.ts", "../src/init.ts"],
  "sourcesContent": ["import {Log} from './log';\n\n// DEFAULT EXPORT IS A LOG INSTANCE\nexport default new Log({id: '@probe.gl/log'});\n\n// LOGGING\nexport {Log} from './log';\nexport {COLOR} from './utils/color';\n\n// UTILITIES\nexport {addColor} from './utils/color';\nexport {leftPad, rightPad} from './utils/formatters';\nexport {autobind} from './utils/autobind';\nexport {LocalStorage} from './utils/local-storage';\nexport {getHiResTimestamp} from './utils/hi-res-timestamp';\n\nimport './init';\n", "// probe.gl, MIT license\n\n/* eslint-disable no-console,prefer-rest-params */\nimport {VERSION, isBrowser} from '@probe.gl/env';\nimport {LocalStorage} from './utils/local-storage';\nimport {formatTime, leftPad} from './utils/formatters';\nimport {addColor} from './utils/color';\nimport {autobind} from './utils/autobind';\nimport assert from './utils/assert';\nimport {getHiResTimestamp} from './utils/hi-res-timestamp';\n\n/** \"Global\" log configuration settings */\ntype LogConfiguration = {\n  enabled?: boolean;\n  level?: number;\n  [key: string]: unknown;\n};\n\n/** Options when logging a message */\ntype LogOptions = {\n  method?: Function;\n  time?: boolean;\n  total?: number;\n  delta?: number;\n  tag?: string;\n  message?: string;\n  once?: boolean;\n  nothrottle?: boolean;\n  args?: any;\n};\n\ntype LogFunction = () => void;\n\ntype Table = Record<string, any>;\n\n// Instrumentation in other packages may override console methods, so preserve them here\nconst originalConsole = {\n  debug: isBrowser() ? console.debug || console.log : console.log,\n  log: console.log,\n  info: console.info,\n  warn: console.warn,\n  error: console.error\n};\n\nconst DEFAULT_LOG_CONFIGURATION: Required<LogConfiguration> = {\n  enabled: true,\n  level: 0\n};\n\nfunction noop() {} // eslint-disable-line @typescript-eslint/no-empty-function\n\nconst cache = {};\nconst ONCE = {once: true};\n\n/** A console wrapper */\n\nexport class Log {\n  static VERSION = VERSION;\n\n  id: string;\n  VERSION: string = VERSION;\n  _startTs: number = getHiResTimestamp();\n  _deltaTs: number = getHiResTimestamp();\n  _storage: LocalStorage<LogConfiguration>;\n  userData = {};\n\n  // TODO - fix support from throttling groups\n  LOG_THROTTLE_TIMEOUT: number = 0; // Time before throttled messages are logged again\n\n  constructor({id} = {id: ''}) {\n    this.id = id;\n    this.userData = {};\n    this._storage = new LocalStorage<LogConfiguration>(\n      `__probe-${this.id}__`,\n      DEFAULT_LOG_CONFIGURATION\n    );\n\n    this.timeStamp(`${this.id} started`);\n\n    autobind(this);\n    Object.seal(this);\n  }\n\n  set level(newLevel: number) {\n    this.setLevel(newLevel);\n  }\n\n  get level(): number {\n    return this.getLevel();\n  }\n\n  isEnabled(): boolean {\n    return this._storage.config.enabled;\n  }\n\n  getLevel(): number {\n    return this._storage.config.level;\n  }\n\n  /** @return milliseconds, with fractions */\n  getTotal(): number {\n    return Number((getHiResTimestamp() - this._startTs).toPrecision(10));\n  }\n\n  /** @return milliseconds, with fractions */\n  getDelta(): number {\n    return Number((getHiResTimestamp() - this._deltaTs).toPrecision(10));\n  }\n\n  /** @deprecated use logLevel */\n  set priority(newPriority: number) {\n    this.level = newPriority;\n  }\n\n  /** @deprecated use logLevel */\n  get priority(): number {\n    return this.level;\n  }\n\n  /** @deprecated use logLevel */\n  getPriority(): number {\n    return this.level;\n  }\n\n  // Configure\n\n  enable(enabled: boolean = true): this {\n    this._storage.setConfiguration({enabled});\n    return this;\n  }\n\n  setLevel(level: number): this {\n    this._storage.setConfiguration({level});\n    return this;\n  }\n\n  /** return the current status of the setting */\n  get(setting: string): any {\n    return this._storage.config[setting];\n  }\n\n  // update the status of the setting\n  set(setting: string, value: any): void {\n    this._storage.setConfiguration({[setting]: value});\n  }\n\n  /** Logs the current settings as a table */\n  settings(): void {\n    if (console.table) {\n      console.table(this._storage.config);\n    } else {\n      console.log(this._storage.config);\n    }\n  }\n\n  // Unconditional logging\n\n  assert(condition: unknown, message?: string): asserts condition {\n    if (!condition) {\n      throw new Error(message || 'Assertion failed');\n    }\n  }\n\n  /** Warn, but only once, no console flooding */\n  warn(message: string, ...args: unknown[]): LogFunction;\n  warn(message: string): LogFunction {\n    return this._getLogFunction(0, message, originalConsole.warn, arguments, ONCE);\n  }\n\n  /** Print an error */\n  error(message: string, ...args: unknown[]): LogFunction;\n  error(message: string): LogFunction {\n    return this._getLogFunction(0, message, originalConsole.error, arguments);\n  }\n\n  /** Print a deprecation warning */\n  deprecated(oldUsage: string, newUsage: string): LogFunction {\n    return this.warn(`\\`${oldUsage}\\` is deprecated and will be removed \\\nin a later version. Use \\`${newUsage}\\` instead`);\n  }\n\n  /** Print a removal warning */\n  removed(oldUsage: string, newUsage: string): LogFunction {\n    return this.error(`\\`${oldUsage}\\` has been removed. Use \\`${newUsage}\\` instead`);\n  }\n\n  // Conditional logging\n\n  /** Log to a group */\n  probe(logLevel, message?, ...args: unknown[]): LogFunction;\n  probe(logLevel, message?): LogFunction {\n    return this._getLogFunction(logLevel, message, originalConsole.log, arguments, {\n      time: true,\n      once: true\n    });\n  }\n\n  /** Log a debug message */\n  log(logLevel, message?, ...args: unknown[]): LogFunction;\n  log(logLevel, message?): LogFunction {\n    return this._getLogFunction(logLevel, message, originalConsole.debug, arguments);\n  }\n\n  /** Log a normal message */\n  info(logLevel, message?, ...args: unknown[]): LogFunction;\n  info(logLevel, message?): LogFunction {\n    return this._getLogFunction(logLevel, message, console.info, arguments);\n  }\n\n  /** Log a normal message, but only once, no console flooding */\n  once(logLevel, message?, ...args: unknown[]): LogFunction;\n  once(logLevel, message?) {\n    return this._getLogFunction(\n      logLevel,\n      message,\n      originalConsole.debug || originalConsole.info,\n      arguments,\n      ONCE\n    );\n  }\n\n  /** Logs an object as a table */\n  table(logLevel, table?, columns?): LogFunction {\n    if (table) {\n      return this._getLogFunction(\n        logLevel,\n        table,\n        console.table || noop,\n        (columns && [columns]) as unknown as IArguments,\n        {\n          tag: getTableHeader(table)\n        }\n      );\n    }\n    return noop;\n  }\n\n  time(logLevel, message) {\n    return this._getLogFunction(logLevel, message, console.time ? console.time : console.info);\n  }\n\n  timeEnd(logLevel, message) {\n    return this._getLogFunction(\n      logLevel,\n      message,\n      console.timeEnd ? console.timeEnd : console.info\n    );\n  }\n\n  timeStamp(logLevel, message?) {\n    return this._getLogFunction(logLevel, message, console.timeStamp || noop);\n  }\n\n  group(logLevel, message, opts = {collapsed: false}) {\n    const options = normalizeArguments({logLevel, message, opts});\n    const {collapsed} = opts;\n    // @ts-expect-error\n    options.method = (collapsed ? console.groupCollapsed : console.group) || console.info;\n\n    return this._getLogFunction(options);\n  }\n\n  groupCollapsed(logLevel, message, opts = {}) {\n    return this.group(logLevel, message, Object.assign({}, opts, {collapsed: true}));\n  }\n\n  groupEnd(logLevel) {\n    return this._getLogFunction(logLevel, '', console.groupEnd || noop);\n  }\n\n  // EXPERIMENTAL\n\n  withGroup(logLevel: number, message: string, func: Function): void {\n    this.group(logLevel, message)();\n\n    try {\n      func();\n    } finally {\n      this.groupEnd(logLevel)();\n    }\n  }\n\n  trace(): void {\n    if (console.trace) {\n      console.trace();\n    }\n  }\n\n  // PRIVATE METHODS\n\n  /** Deduces log level from a variety of arguments */\n  _shouldLog(logLevel: unknown): boolean {\n    return this.isEnabled() && this.getLevel() >= normalizeLogLevel(logLevel);\n  }\n\n  _getLogFunction(\n    logLevel: unknown,\n    message?: unknown,\n    method?: Function,\n    args?: IArguments,\n    opts?: LogOptions\n  ): LogFunction {\n    if (this._shouldLog(logLevel)) {\n      // normalized opts + timings\n      opts = normalizeArguments({logLevel, message, args, opts});\n      method = method || opts.method;\n      assert(method);\n\n      opts.total = this.getTotal();\n      opts.delta = this.getDelta();\n      // reset delta timer\n      this._deltaTs = getHiResTimestamp();\n\n      const tag = opts.tag || opts.message;\n\n      if (opts.once && tag) {\n        if (!cache[tag]) {\n          cache[tag] = getHiResTimestamp();\n        } else {\n          return noop;\n        }\n      }\n\n      // TODO - Make throttling work with groups\n      // if (opts.nothrottle || !throttle(tag, this.LOG_THROTTLE_TIMEOUT)) {\n      //   return noop;\n      // }\n\n      message = decorateMessage(this.id, opts.message, opts);\n\n      // Bind console function so that it can be called after being returned\n      return method.bind(console, message, ...opts.args);\n    }\n    return noop;\n  }\n}\n\n/**\n * Get logLevel from first argument:\n * - log(logLevel, message, args) => logLevel\n * - log(message, args) => 0\n * - log({logLevel, ...}, message, args) => logLevel\n * - log({logLevel, message, args}) => logLevel\n */\nfunction normalizeLogLevel(logLevel: unknown): number {\n  if (!logLevel) {\n    return 0;\n  }\n  let resolvedLevel;\n\n  switch (typeof logLevel) {\n    case 'number':\n      resolvedLevel = logLevel;\n      break;\n\n    case 'object':\n      // Backward compatibility\n      // TODO - deprecate `priority`\n      // @ts-expect-error\n      resolvedLevel = logLevel.logLevel || logLevel.priority || 0;\n      break;\n\n    default:\n      return 0;\n  }\n  // 'log level must be a number'\n  assert(Number.isFinite(resolvedLevel) && resolvedLevel >= 0);\n\n  return resolvedLevel;\n}\n\n/**\n * \"Normalizes\" the various argument patterns into an object with known types\n * - log(logLevel, message, args) => {logLevel, message, args}\n * - log(message, args) => {logLevel: 0, message, args}\n * - log({logLevel, ...}, message, args) => {logLevel, message, args}\n * - log({logLevel, message, args}) => {logLevel, message, args}\n */\nexport function normalizeArguments(opts: {\n  logLevel;\n  message;\n  collapsed?: boolean;\n  args?: IArguments | undefined;\n  opts?;\n}): {\n  logLevel: number;\n  message: string;\n  args: any[];\n} {\n  const {logLevel, message} = opts;\n  opts.logLevel = normalizeLogLevel(logLevel);\n\n  // We use `arguments` instead of rest parameters (...args) because IE\n  // does not support the syntax. Rest parameters is transpiled to code with\n  // perf impact. Doing it here instead avoids constructing args when logging is\n  // disabled.\n  // TODO - remove when/if IE support is dropped\n  const args: any[] = opts.args ? Array.from(opts.args) : [];\n  // args should only contain arguments that appear after `message`\n  // eslint-disable-next-line no-empty\n  while (args.length && args.shift() !== message) {}\n\n  switch (typeof logLevel) {\n    case 'string':\n    case 'function':\n      if (message !== undefined) {\n        args.unshift(message);\n      }\n      opts.message = logLevel;\n      break;\n\n    case 'object':\n      Object.assign(opts, logLevel);\n      break;\n\n    default:\n  }\n\n  // Resolve functions into strings by calling them\n  if (typeof opts.message === 'function') {\n    opts.message = opts.message();\n  }\n  const messageType = typeof opts.message;\n  // 'log message must be a string' or object\n  assert(messageType === 'string' || messageType === 'object');\n\n  // original opts + normalized opts + opts arg + fixed up message\n  return Object.assign(opts, {args}, opts.opts);\n}\n\nfunction decorateMessage(id, message, opts) {\n  if (typeof message === 'string') {\n    const time = opts.time ? leftPad(formatTime(opts.total)) : '';\n    message = opts.time ? `${id}: ${time}  ${message}` : `${id}: ${message}`;\n    message = addColor(message, opts.color, opts.background);\n  }\n  return message;\n}\n\nfunction getTableHeader(table: Table): string {\n  for (const key in table) {\n    for (const title in table[key]) {\n      return title || 'untitled';\n    }\n  }\n  return 'empty';\n}\n", "// probe.gl, MIT license\n\nexport type StorageType = 'sessionStorage' | 'localStorage';\n\nfunction getStorage(type: StorageType): Storage | null {\n  try {\n    const storage: Storage = window[type];\n    const x = '__storage_test__';\n    storage.setItem(x, x);\n    storage.removeItem(x);\n    return storage;\n  } catch (e) {\n    return null;\n  }\n}\n\n// Store keys in local storage via simple interface\nexport class LocalStorage<Configuration extends {}> {\n  storage: Storage | null;\n  id: string;\n  config: Required<Configuration>;\n\n  constructor(\n    id: string,\n    defaultConfig: Required<Configuration>,\n    type: StorageType = 'sessionStorage'\n  ) {\n    this.storage = getStorage(type);\n    this.id = id;\n    this.config = defaultConfig;\n    this._loadConfiguration();\n  }\n\n  getConfiguration(): Required<Configuration> {\n    return this.config;\n  }\n\n  setConfiguration(configuration: Configuration): void {\n    Object.assign(this.config, configuration);\n    if (this.storage) {\n      const serialized = JSON.stringify(this.config);\n      this.storage.setItem(this.id, serialized);\n    }\n  }\n\n  // Get config from persistent store, if available\n  _loadConfiguration() {\n    let configuration = {};\n    if (this.storage) {\n      const serializedConfiguration = this.storage.getItem(this.id);\n      configuration = serializedConfiguration ? JSON.parse(serializedConfiguration) : {};\n    }\n    Object.assign(this.config, configuration);\n    return this;\n  }\n}\n", "// probe.gl, MIT license\n\nexport type FormatValueOptions = {\n  isInteger?: boolean;\n  maxElts?: number;\n  size?: number;\n};\n\n/**\n * Format time\n */\nexport function formatTime(ms: number): string {\n  let formatted;\n  if (ms < 10) {\n    formatted = `${ms.toFixed(2)}ms`;\n  } else if (ms < 100) {\n    formatted = `${ms.toFixed(1)}ms`;\n  } else if (ms < 1000) {\n    formatted = `${ms.toFixed(0)}ms`;\n  } else {\n    formatted = `${(ms / 1000).toFixed(2)}s`;\n  }\n  return formatted;\n}\n\nexport function leftPad(string: string, length: number = 8): string {\n  const padLength = Math.max(length - string.length, 0);\n  return `${' '.repeat(padLength)}${string}`;\n}\n\nexport function rightPad(string: string, length: number = 8): string {\n  const padLength = Math.max(length - string.length, 0);\n  return `${string}${' '.repeat(padLength)}`;\n}\n\nexport function formatValue(v: unknown, options: FormatValueOptions = {}): string {\n  const EPSILON = 1e-16;\n  const {isInteger = false} = options;\n  if (Array.isArray(v) || ArrayBuffer.isView(v)) {\n    return formatArrayValue(v, options);\n  }\n  if (!Number.isFinite(v)) {\n    return String(v);\n  }\n  // @ts-expect-error\n  if (Math.abs(v) < EPSILON) {\n    return isInteger ? '0' : '0.';\n  }\n  if (isInteger) {\n    // @ts-expect-error\n    return v.toFixed(0);\n  }\n  // @ts-expect-error\n  if (Math.abs(v) > 100 && Math.abs(v) < 10000) {\n    // @ts-expect-error\n    return v.toFixed(0);\n  }\n  // @ts-expect-error\n  const string = v.toPrecision(2);\n  const decimal = string.indexOf('.0');\n  return decimal === string.length - 2 ? string.slice(0, -1) : string;\n}\n\n/** Helper to formatValue */\nfunction formatArrayValue(v: any, options: FormatValueOptions) {\n  const {maxElts = 16, size = 1} = options;\n  let string = '[';\n  for (let i = 0; i < v.length && i < maxElts; ++i) {\n    if (i > 0) {\n      string += `,${i % size === 0 ? ' ' : ''}`;\n    }\n    string += formatValue(v[i], options);\n  }\n  const terminator = v.length > maxElts ? '...' : ']';\n  return `${string}${terminator}`;\n}\n", "import {isBrowser} from '@probe.gl/env';\n\nexport enum COLOR {\n  BLACK = 30,\n  RED = 31,\n  GREEN = 32,\n  YELLOW = 33,\n  BLUE = 34,\n  MAGENTA = 35,\n  CYAN = 36,\n  WHITE = 37,\n\n  BRIGHT_BLACK = 90,\n  BRIGHT_RED = 91,\n  BRIGHT_GREEN = 92,\n  BRIGHT_YELLOW = 93,\n  BRIGHT_BLUE = 94,\n  BRIGHT_MAGENTA = 95,\n  BRIGHT_CYAN = 96,\n  BRIGHT_WHITE = 97\n}\n\nconst BACKGROUND_INCREMENT = 10;\n\nfunction getColor(color: string | COLOR): number {\n  if (typeof color !== 'string') {\n    return color;\n  }\n  color = color.toUpperCase();\n  return COLOR[color] || COLOR.WHITE;\n}\n\nexport function addColor(\n  string: string,\n  color: string | COLOR,\n  background?: string | COLOR\n): string {\n  if (!isBrowser && typeof string === 'string') {\n    if (color) {\n      const colorCode = getColor(color);\n      string = `\\u001b[${colorCode}m${string}\\u001b[39m`;\n    }\n    if (background) {\n      // background colors values are +10\n      const colorCode = getColor(background);\n      string = `\\u001b[${colorCode + BACKGROUND_INCREMENT}m${string}\\u001b[49m`;\n    }\n  }\n  return string;\n}\n", "// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n/**\n * Binds the \"this\" argument of all functions on a class instance to the instance\n * @param obj - class instance (typically a react component)\n */\nexport function autobind(obj: object, predefined = ['constructor']): void {\n  const proto = Object.getPrototypeOf(obj);\n  const propNames = Object.getOwnPropertyNames(proto);\n\n  const object = obj as Record<string, unknown>;\n  for (const key of propNames) {\n    const value = object[key];\n    if (typeof value === 'function') {\n      if (!predefined.find((name) => key === name)) {\n        object[key] = value.bind(obj);\n      }\n    }\n  }\n}\n", "export default function assert(condition: unknown, message?: string): asserts condition {\n  if (!condition) {\n    throw new Error(message || 'Assertion failed');\n  }\n}\n", "// probe.gl, MIT license\n\nimport {window, process, isBrowser} from '@probe.gl/env';\n\n/** Get best timer available. */\nexport function getHiResTimestamp() {\n  let timestamp;\n  if (isBrowser() && window.performance) {\n    timestamp = window?.performance?.now?.();\n  } else if ('hrtime' in process) {\n    // @ts-ignore\n    const timeParts = process?.hrtime?.();\n    timestamp = timeParts[0] * 1000 + timeParts[1] / 1e6;\n  } else {\n    timestamp = Date.now();\n  }\n\n  return timestamp;\n}\n", "// @ts-nocheck\n/* eslint-disable */\nglobalThis.probe = {};\n"],
  "mappings": "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",
  "names": ["import_env", "COLOR", "import_env"]
}
