{
  "classes": [
    {
      "constants": [],
      "types": [
        {
          "lua_type": "type LevelName = LoggingTypes.LevelName",
          "name": "LevelName",
          "tags": [],
          "source": {
            "path": "",
            "line": 32
          },
          "fields": [],
          "desc": ""
        },
        {
          "lua_type": "type LevelInput = LoggingTypes.LevelInput",
          "name": "LevelInput",
          "tags": [],
          "source": {
            "path": "",
            "line": 33
          },
          "fields": [],
          "desc": ""
        },
        {
          "lua_type": "type LogAttrs = LoggingTypes.LogAttrs",
          "name": "LogAttrs",
          "tags": [],
          "source": {
            "path": "",
            "line": 34
          },
          "fields": [],
          "desc": ""
        },
        {
          "lua_type": "type LogRecord = LoggingTypes.LogRecord",
          "name": "LogRecord",
          "tags": [],
          "source": {
            "path": "",
            "line": 35
          },
          "fields": [],
          "desc": ""
        },
        {
          "lua_type": "type Handler = LoggingTypes.Handler",
          "name": "Handler",
          "tags": [],
          "source": {
            "path": "",
            "line": 36
          },
          "fields": [],
          "desc": ""
        },
        {
          "lua_type": "type LoggingConfig = { level: LevelInput?, captureSource: boolean?, sourceDepth: number?, reset: boolean? }",
          "name": "LoggingConfig",
          "tags": [],
          "source": {
            "path": "",
            "line": 38
          },
          "fields": [
            {
              "lua_type": "level: LevelInput?",
              "name": "level",
              "desc": ""
            },
            {
              "lua_type": "captureSource: boolean?",
              "name": "captureSource",
              "desc": ""
            },
            {
              "lua_type": "sourceDepth: number?",
              "name": "sourceDepth",
              "desc": ""
            },
            {
              "lua_type": "reset: boolean?",
              "name": "reset",
              "desc": ""
            }
          ],
          "desc": ""
        }
      ],
      "name": "@eryx/logging",
      "tags": [],
      "functions": [
        {
          "source": {
            "path": "",
            "line": 142
          },
          "is_method": false,
          "signature": "logging.parseLevel(\n    level: LevelInput  -- Level name/alias or numeric value.\n) → (\n    number  -- Numeric level value used for comparisons. \n)",
          "owner": "logging",
          "desc": "Parses a level input into its numeric representation.\n\nSupports canonical names (`\"debug\"`, `\"warning\"`, ...), alias `\"warn\"`,\nand raw numeric values.\n",
          "tags": [],
          "name": "parseLevel",
          "return_str": "number",
          "function_type": "Function",
          "returns": [
            {
              "lua_type": "number",
              "desc": "Numeric level value used for comparisons. "
            }
          ],
          "params": [
            {
              "lua_type": "LevelInput",
              "name": "level",
              "desc": "Level name/alias or numeric value."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 326
          },
          "is_method": false,
          "signature": "logging.getLogger(\n    name: string?  -- Optional logger name (for example `\"app.http\"`).\n) → (\n    Logger  -- Logger instance bound to the requested name. \n)",
          "owner": "logging",
          "desc": "Returns a logger by name, creating it if needed.\n\nLogger names are hierarchical with dot-separated segments.\nOmit the name (or pass `\"\"`) to retrieve the root logger.\n",
          "tags": [],
          "name": "getLogger",
          "return_str": "Logger",
          "function_type": "Function",
          "returns": [
            {
              "lua_type": "Logger",
              "desc": "Logger instance bound to the requested name. "
            }
          ],
          "params": [
            {
              "lua_type": "string?",
              "name": "name",
              "desc": "Optional logger name (for example `\"app.http\"`)."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 344
          },
          "is_method": false,
          "signature": "logging.config(\n    config: LoggingConfig?  -- Optional logging configuration.\n) → (\n    ()  -- No return value. \n)",
          "owner": "logging",
          "desc": "Configures global logging behavior.\n\nWhen `reset` is true, logger overrides/handlers are reset to defaults.\nThe root logger is reset to info level with the default console handler.\n",
          "tags": [],
          "name": "config",
          "return_str": "",
          "function_type": "Function",
          "returns": [],
          "params": [
            {
              "lua_type": "LoggingConfig?",
              "name": "config",
              "desc": "Optional logging configuration."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 383
          },
          "is_method": false,
          "signature": "logging.addHandler(\n    handler: Handler  -- A handler implementing the logging handler contract.\n) → (\n    Handler  -- The normalized handler that was added. \n)",
          "owner": "logging",
          "desc": "Adds a handler to the root logger.\n\nRoot handlers receive records from all propagating child loggers.\n",
          "tags": [],
          "name": "addHandler",
          "return_str": "Handler",
          "function_type": "Function",
          "returns": [
            {
              "lua_type": "Handler",
              "desc": "The normalized handler that was added. "
            }
          ],
          "params": [
            {
              "lua_type": "Handler",
              "name": "handler",
              "desc": "A handler implementing the logging handler contract."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 395
          },
          "is_method": false,
          "signature": "logging.removeHandler(\n    handler: Handler  -- The handler instance to remove.\n) → (\n    boolean  -- `true` when removed, `false` when not found. \n)",
          "owner": "logging",
          "desc": "Removes a handler from the root logger.\n",
          "tags": [],
          "name": "removeHandler",
          "return_str": "boolean",
          "function_type": "Function",
          "returns": [
            {
              "lua_type": "boolean",
              "desc": "`true` when removed, `false` when not found. "
            }
          ],
          "params": [
            {
              "lua_type": "Handler",
              "name": "handler",
              "desc": "The handler instance to remove."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 411
          },
          "is_method": false,
          "signature": "logging.clearHandlers() → (\n    ()  -- No return value. \n)",
          "owner": "logging",
          "desc": "Clears all handlers from the root logger.\n\n@param none",
          "tags": [],
          "name": "clearHandlers",
          "return_str": "",
          "function_type": "Function",
          "returns": [],
          "params": []
        }
      ],
      "properties": [],
      "source": {
        "path": "",
        "line": 0
      },
      "desc": "Structured, hierarchical logging for Luau applications.\n\nThis module provides:\n- named loggers with parent/child inheritance (`app`, `app.http`, ...)\n- leveled logging (`debug`..`critical`)\n- handler-based output routing\n- optional source metadata capture\n\nThe root logger is `\"\"` and includes a default [[ConsoleHandler]].\n\n```luau\nlocal logging = require(\"@eryx/logging\")\n\nlogging.config({\n\tlevel = \"info\",\n})\n\nlocal log = logging.getLogger(\"app\")\nlog:info(\"server started\", { port = 8080 })\n```\n"
    },
    {
      "is_primary_export": false,
      "source": {
        "path": "",
        "line": 68
      },
      "tags": [],
      "properties": [
        {
          "tags": [],
          "lua_type": "_state: LoggerState",
          "name": "_state",
          "desc": ""
        },
        {
          "tags": [],
          "lua_type": "_context: LogAttrs?",
          "name": "_context",
          "desc": ""
        }
      ],
      "desc": "",
      "name": "Logger",
      "functions": [
        {
          "source": {
            "path": "",
            "line": 454
          },
          "is_method": true,
          "signature": "Logger:log(\n    level: LevelInput,  -- Level name (`\"debug\"`, `\"warn\"`, ...) or numeric level.\n    message: string,  -- Human-readable log message.\n    attrs: LogAttrs?  -- Optional structured attributes merged into the record.\n) → (\n    boolean  -- `true` when at least one handler emitted the record. \n)",
          "owner": "Logger",
          "desc": "Emits a log record at a specific level.\n",
          "tags": [],
          "name": "log",
          "return_str": "boolean",
          "function_type": "Method",
          "returns": [
            {
              "lua_type": "boolean",
              "desc": "`true` when at least one handler emitted the record. "
            }
          ],
          "params": [
            {
              "lua_type": "LevelInput",
              "name": "level",
              "desc": "Level name (`\"debug\"`, `\"warn\"`, ...) or numeric level."
            },
            {
              "lua_type": "string",
              "name": "message",
              "desc": "Human-readable log message."
            },
            {
              "lua_type": "LogAttrs?",
              "name": "attrs",
              "desc": "Optional structured attributes merged into the record."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 465
          },
          "is_method": true,
          "signature": "Logger:debug(\n    message: string,  -- Human-readable log message.\n    attrs: LogAttrs?  -- Optional structured attributes.\n) → (\n    boolean  -- `true` when at least one handler emitted the record. \n)",
          "owner": "Logger",
          "desc": "Logs a record at `debug` level.\n",
          "tags": [],
          "name": "debug",
          "return_str": "boolean",
          "function_type": "Method",
          "returns": [
            {
              "lua_type": "boolean",
              "desc": "`true` when at least one handler emitted the record. "
            }
          ],
          "params": [
            {
              "lua_type": "string",
              "name": "message",
              "desc": "Human-readable log message."
            },
            {
              "lua_type": "LogAttrs?",
              "name": "attrs",
              "desc": "Optional structured attributes."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 476
          },
          "is_method": true,
          "signature": "Logger:info(\n    message: string,  -- Human-readable log message.\n    attrs: LogAttrs?  -- Optional structured attributes.\n) → (\n    boolean  -- `true` when at least one handler emitted the record. \n)",
          "owner": "Logger",
          "desc": "Logs a record at `info` level.\n",
          "tags": [],
          "name": "info",
          "return_str": "boolean",
          "function_type": "Method",
          "returns": [
            {
              "lua_type": "boolean",
              "desc": "`true` when at least one handler emitted the record. "
            }
          ],
          "params": [
            {
              "lua_type": "string",
              "name": "message",
              "desc": "Human-readable log message."
            },
            {
              "lua_type": "LogAttrs?",
              "name": "attrs",
              "desc": "Optional structured attributes."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 487
          },
          "is_method": true,
          "signature": "Logger:warning(\n    message: string,  -- Human-readable log message.\n    attrs: LogAttrs?  -- Optional structured attributes.\n) → (\n    boolean  -- `true` when at least one handler emitted the record. \n)",
          "owner": "Logger",
          "desc": "Logs a record at `warning` level.\n",
          "tags": [],
          "name": "warning",
          "return_str": "boolean",
          "function_type": "Method",
          "returns": [
            {
              "lua_type": "boolean",
              "desc": "`true` when at least one handler emitted the record. "
            }
          ],
          "params": [
            {
              "lua_type": "string",
              "name": "message",
              "desc": "Human-readable log message."
            },
            {
              "lua_type": "LogAttrs?",
              "name": "attrs",
              "desc": "Optional structured attributes."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 498
          },
          "is_method": true,
          "signature": "Logger:warn(\n    message: string,  -- Human-readable log message.\n    attrs: LogAttrs?  -- Optional structured attributes.\n) → (\n    boolean  -- `true` when at least one handler emitted the record. \n)",
          "owner": "Logger",
          "desc": "Logs a record at `warning` level (alias for [[Logger.warning]]).\n",
          "tags": [],
          "name": "warn",
          "return_str": "boolean",
          "function_type": "Method",
          "returns": [
            {
              "lua_type": "boolean",
              "desc": "`true` when at least one handler emitted the record. "
            }
          ],
          "params": [
            {
              "lua_type": "string",
              "name": "message",
              "desc": "Human-readable log message."
            },
            {
              "lua_type": "LogAttrs?",
              "name": "attrs",
              "desc": "Optional structured attributes."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 509
          },
          "is_method": true,
          "signature": "Logger:error(\n    message: string,  -- Human-readable log message.\n    attrs: LogAttrs?  -- Optional structured attributes.\n) → (\n    boolean  -- `true` when at least one handler emitted the record. \n)",
          "owner": "Logger",
          "desc": "Logs a record at `error` level.\n",
          "tags": [],
          "name": "error",
          "return_str": "boolean",
          "function_type": "Method",
          "returns": [
            {
              "lua_type": "boolean",
              "desc": "`true` when at least one handler emitted the record. "
            }
          ],
          "params": [
            {
              "lua_type": "string",
              "name": "message",
              "desc": "Human-readable log message."
            },
            {
              "lua_type": "LogAttrs?",
              "name": "attrs",
              "desc": "Optional structured attributes."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 520
          },
          "is_method": true,
          "signature": "Logger:critical(\n    message: string,  -- Human-readable log message.\n    attrs: LogAttrs?  -- Optional structured attributes.\n) → (\n    boolean  -- `true` when at least one handler emitted the record. \n)",
          "owner": "Logger",
          "desc": "Logs a record at `critical` level.\n",
          "tags": [],
          "name": "critical",
          "return_str": "boolean",
          "function_type": "Method",
          "returns": [
            {
              "lua_type": "boolean",
              "desc": "`true` when at least one handler emitted the record. "
            }
          ],
          "params": [
            {
              "lua_type": "string",
              "name": "message",
              "desc": "Human-readable log message."
            },
            {
              "lua_type": "LogAttrs?",
              "name": "attrs",
              "desc": "Optional structured attributes."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 530
          },
          "is_method": true,
          "signature": "Logger:isEnabledFor(\n    level: LevelInput  -- Level name or numeric level.\n) → (\n    boolean  -- `true` if records at this level would pass logger-level gating. \n)",
          "owner": "Logger",
          "desc": "Checks whether the logger is enabled for the provided level.\n",
          "tags": [],
          "name": "isEnabledFor",
          "return_str": "boolean",
          "function_type": "Method",
          "returns": [
            {
              "lua_type": "boolean",
              "desc": "`true` if records at this level would pass logger-level gating. "
            }
          ],
          "params": [
            {
              "lua_type": "LevelInput",
              "name": "level",
              "desc": "Level name or numeric level."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 542
          },
          "is_method": true,
          "signature": "Logger:setLevel(\n    level: LevelInput?  -- Optional level override for this logger.\n) → (\n    Logger  -- Self, for chaining. \n)",
          "owner": "Logger",
          "desc": "Sets or clears this logger's explicit level.\n\nPass `nil` to clear the override and inherit from parents/root.\n",
          "tags": [],
          "name": "setLevel",
          "return_str": "Logger",
          "function_type": "Method",
          "returns": [
            {
              "lua_type": "Logger",
              "desc": "Self, for chaining. "
            }
          ],
          "params": [
            {
              "lua_type": "LevelInput?",
              "name": "level",
              "desc": "Optional level override for this logger."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 558
          },
          "is_method": true,
          "signature": "Logger:addHandler(\n    handler: Handler  -- A handler implementing the logging handler contract.\n) → (\n    Handler  -- The normalized handler that was added. \n)",
          "owner": "Logger",
          "desc": "Adds a handler directly to this logger.\n",
          "tags": [],
          "name": "addHandler",
          "return_str": "Handler",
          "function_type": "Method",
          "returns": [
            {
              "lua_type": "Handler",
              "desc": "The normalized handler that was added. "
            }
          ],
          "params": [
            {
              "lua_type": "Handler",
              "name": "handler",
              "desc": "A handler implementing the logging handler contract."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 570
          },
          "is_method": true,
          "signature": "Logger:removeHandler(\n    handler: Handler  -- The handler instance to remove.\n) → (\n    boolean  -- `true` when removed, `false` when not found. \n)",
          "owner": "Logger",
          "desc": "Removes a handler from this logger.\n",
          "tags": [],
          "name": "removeHandler",
          "return_str": "boolean",
          "function_type": "Method",
          "returns": [
            {
              "lua_type": "boolean",
              "desc": "`true` when removed, `false` when not found. "
            }
          ],
          "params": [
            {
              "lua_type": "Handler",
              "name": "handler",
              "desc": "The handler instance to remove."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 587
          },
          "is_method": true,
          "signature": "Logger:clearHandlers() → (\n    ()  -- No return value. \n)",
          "owner": "Logger",
          "desc": "Clears all handlers attached to this logger.\n\n@param none",
          "tags": [],
          "name": "clearHandlers",
          "return_str": "",
          "function_type": "Method",
          "returns": [],
          "params": []
        },
        {
          "source": {
            "path": "",
            "line": 601
          },
          "is_method": true,
          "signature": "Logger:child(\n    suffix: string,  -- Child segment to append to this logger name.\n    context: LogAttrs?  -- Optional context merged into all child log records.\n) → (\n    Logger  -- Child logger instance. \n)",
          "owner": "Logger",
          "desc": "Creates or retrieves a child logger.\n\nChild names are joined with `.` (for example `app` + `http` -> `app.http`).\nWhen `context` is provided, the returned child logger includes that context.\n",
          "tags": [],
          "name": "child",
          "return_str": "Logger",
          "function_type": "Method",
          "returns": [
            {
              "lua_type": "Logger",
              "desc": "Child logger instance. "
            }
          ],
          "params": [
            {
              "lua_type": "string",
              "name": "suffix",
              "desc": "Child segment to append to this logger name."
            },
            {
              "lua_type": "LogAttrs?",
              "name": "context",
              "desc": "Optional context merged into all child log records."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 620
          },
          "is_method": true,
          "signature": "Logger:withContext(\n    context: LogAttrs  -- Structured attributes to bind to this logger.\n) → (\n    Logger  -- A new logger view sharing the same logger state. \n)",
          "owner": "Logger",
          "desc": "Returns a logger view with additional bound context.\n\nContext is merged with per-call attrs, where per-call attrs win on conflicts.\n",
          "tags": [],
          "name": "withContext",
          "return_str": "Logger",
          "function_type": "Method",
          "returns": [
            {
              "lua_type": "Logger",
              "desc": "A new logger view sharing the same logger state. "
            }
          ],
          "params": [
            {
              "lua_type": "LogAttrs",
              "name": "context",
              "desc": "Structured attributes to bind to this logger."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 636
          },
          "is_method": true,
          "signature": "Logger:setPropagation(\n    propagate: boolean  -- When `false`, dispatch stops at this logger.\n) → (\n    Logger  -- Self, for chaining. \n)",
          "owner": "Logger",
          "desc": "Enables or disables handler propagation to parent loggers.\n",
          "tags": [],
          "name": "setPropagation",
          "return_str": "Logger",
          "function_type": "Method",
          "returns": [
            {
              "lua_type": "Logger",
              "desc": "Self, for chaining. "
            }
          ],
          "params": [
            {
              "lua_type": "boolean",
              "name": "propagate",
              "desc": "When `false`, dispatch stops at this logger."
            }
          ]
        },
        {
          "source": {
            "path": "",
            "line": 649
          },
          "is_method": true,
          "signature": "Logger:closeHandlers() → (\n    ()  -- No return value. \n)",
          "owner": "Logger",
          "desc": "Invokes `close()` on each handler attached to this logger.\n\nErrors from handler close operations are suppressed.\n\n@param none",
          "tags": [],
          "name": "closeHandlers",
          "return_str": "",
          "function_type": "Method",
          "returns": [],
          "params": []
        }
      ],
      "metamethods": [],
      "types": []
    }
  ]
}