{
  "version": 3,
  "sources": ["../src/main.ts", "../src/logger.ts"],
  "sourcesContent": ["export * from './logger.js';\nexport * from './type.js';\n", "import {packageTracer} from '@alwatr/package-tracer';\nimport {platformInfo} from '@alwatr/platform-info';\n\nimport type {AlwatrLogger} from './type.js';\n\n__dev_mode__: packageTracer.add(__package_name__, __package_version__);\n\nconst defaultDebugMode = /* #__PURE__ */ (() => {\n  return (\n    platformInfo.development ||\n    (platformInfo.isCli ? Boolean(process.env.DEBUG) : typeof localStorage !== 'undefined' && localStorage.getItem('ALWATR_DEBUG') === '1')\n  );\n})();\n\n/**\n * Color list storage for logger.\n */\nconst colorList = /* #__PURE__ */ (() =>\n  platformInfo.isCli\n    ? ['0;36', '0;35', '0;34', '0;33', '0;32'] // red and white omitted\n    : [\n      '#35b997',\n      '#f05561',\n      '#ee224a',\n      '#91c13e',\n      '#22af4b',\n      '#f0e995',\n      '#0fe995',\n      '#0f89ca',\n      '#08b9a5',\n      '#fee851',\n      '#ee573d',\n      '#f9df30',\n      '#1da2dc',\n      '#f05123',\n      '#ee2524',\n    ])();\n\nlet _colorIndex = 0;\nconst _getNextColor = (): string => {\n  const color = colorList[_colorIndex];\n  _colorIndex++;\n  if (_colorIndex >= colorList.length) {\n    _colorIndex = 0;\n  }\n  return color;\n};\n\nconst _style = /* #__PURE__ */ (() => ({\n  scope: platformInfo.isCli ? '\\x1b[{{color}}m' : 'color: {{color}};',\n  reset: platformInfo.isCli ? '\\x1b[0m' : 'color: inherit;',\n}))();\n\nconst _keySection = /* #__PURE__ */ (() => (platformInfo.isCli ? '%s%s%s' : '%c%s%c'))();\n\nconst _sanitizeDomain = (domain: string): string => {\n  domain = domain.trim();\n  const first = domain.charAt(0);\n  if (first !== '[' && first !== '{' && first !== '<') {\n    domain = '[' + domain + ']';\n  }\n  return domain;\n};\n\n/**\n * Create a logger function for fancy console debug with custom scope.\n *\n * - **color** is optional and automatically select from internal fancy color list.\n * - **debug** is optional and automatically detect from localStorage `ALWATR_DEBUG` item or `process.env.ALWATR_DEBUG`\n *\n * Example:\n *\n * ```ts\n * import {createLogger} from 'https://esm.run/@alwatr/logger';\n * const logger = createLogger('logger/demo');\n * ```\n */\nexport const createLogger = (domain: string, debugMode = defaultDebugMode): AlwatrLogger => {\n  const color = _getNextColor();\n  const styleScope = _style.scope.replace('{{color}}', color);\n  domain = _sanitizeDomain(domain);\n\n  /**\n   * Required logger object, accident, error always reported even when the devMode is false.\n   */\n  const requiredItems: AlwatrLogger = {\n    debugMode,\n\n    banner: platformInfo.isCli\n      ? console.log.bind(console, `\\x1b[1;37;45m {{{ %s }}} ${_style.reset}`)\n      : console.log.bind(\n        console,\n        '%c%s',\n        'font-size: 2rem; background-color: #5858e8; color: #fff; padding: 1rem 4rem; border-radius: 0.5rem;',\n      ),\n\n    accident: platformInfo.isCli\n      ? console.warn.bind(console, `${styleScope}⚠️\\n%s\\x1b[33m.%s() Accident \\`%s\\`!${_style.reset}`, domain)\n      : console.warn.bind(console, '%c%s%c.%s() Accident `%s`!', styleScope, domain, _style.reset),\n\n    error: platformInfo.isCli\n      ? console.error.bind(console, `${styleScope}❌\\n%s\\x1b[31m.%s() Error \\`%s\\`${_style.reset}\\n`, domain)\n      : console.error.bind(console, '%c%s%c.%s() Error `%s`\\n', styleScope, domain, _style.reset),\n  };\n\n  if (!debugMode) {\n    return requiredItems;\n  }\n  // else\n  return {\n    ...requiredItems,\n\n    logProperty: console.debug.bind(console, _keySection + '.%s = %o;', styleScope, domain, _style.reset),\n\n    logMethod: console.debug.bind(console, _keySection + '.%s();', styleScope, domain, _style.reset),\n\n    logFileModule: console.debug.bind(console, _keySection + '/%s.js;', styleScope, domain, _style.reset),\n\n    logMethodArgs: console.debug.bind(console, _keySection + '.%s(%o);', styleScope, domain, _style.reset),\n\n    logMethodFull: console.debug.bind(console, _keySection + '.%s(%o) => %o', styleScope, domain, _style.reset),\n\n    logStep: console.debug.bind(console, _keySection + '.%s() -> %s', styleScope, domain, _style.reset),\n\n    logOther: console.debug.bind(console, _keySection, styleScope, domain, _style.reset),\n\n    incident: platformInfo.isCli\n      ? console.log.bind(console, `${styleScope}🚸\\n%s${_style.reset}.%s() Incident \\`%s\\`!${_style.reset}`, domain)\n      : console.log.bind(console, '%c%s%c.%s() Incident `%s`!', styleScope, domain, 'color: orange;'),\n\n    time: (label: string) => console.time(domain + '.' + label + ' duration time'),\n    timeEnd: (label: string) => console.timeEnd(domain + '.' + label + ' duration time'),\n  } as const;\n};\n"],
  "mappings": "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",
  "names": []
}
