{
"schema": "codoc/v1",
"metadata": {
"name": "my-lib",
"version": "1.0.0",
"language": "typescript",
"generatedAt": "2025-01-15T10:00:00Z",
"sourceRoot": "src",
"files": ["src/Logger.ts", "src/Cache.ts", "src/utils/StringUtils.ts"],
"externalLinks": {
"typescript": {
"baseUrl": "https://developer.mozilla.org/en-US/docs/Web/API",
"urlTemplate": "{baseUrl}/{name}",
"symbols": {
"Console": "https://developer.mozilla.org/en-US/docs/Web/API/Console",
"Map": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map",
"Date": "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date"
}
}
}
},
"entities": [
{
"id": "Logger",
"name": "Logger",
"kind": "class",
"location": { "file": "src/Logger.ts", "line": 15 },
"visibility": "public",
"docs": {
"summary": "A configurable logging utility",
"description": "Provides structured logging with support for multiple log levels, custom formatters, and output handlers.",
"examples": [
{
"title": "Basic usage",
"code": "const logger = new Logger({ level: LogLevel.Debug });\nlogger.info('Application started');\nlogger.error('Something went wrong', { code: 500 });",
"language": "typescript"
}
]
},
"typeParams": [
{
"name": "TContext",
"default": { "name": "Record<string, unknown>", "kind": "simple" },
"description": "Type of the context object passed to log entries"
}
],
"constructor": {
"id": "Logger.constructor",
"name": "constructor",
"kind": "constructor",
"params": [
{
"name": "options",
"type": { "name": "LoggerOptions", "kind": "simple", "ref": "LoggerOptions" },
"optional": true,
"description": "Configuration options for the logger"
}
]
},
"properties": [
{
"id": "Logger.level",
"name": "level",
"kind": "property",
"type": { "name": "LogLevel", "kind": "simple", "ref": "LogLevel" },
"visibility": "public",
"docs": { "summary": "Current minimum log level" }
}
],
"methods": [
{
"id": "Logger.log",
"name": "log",
"kind": "method",
"visibility": "public",
"docs": {
"summary": "Logs a message at the specified level"
},
"params": [
{
"name": "level",
"type": { "name": "LogLevel", "kind": "simple", "ref": "LogLevel" },
"description": "The log level"
},
{
"name": "message",
"type": { "name": "string", "kind": "simple" },
"description": "The message to log"
},
{
"name": "context",
"type": { "name": "TContext", "kind": "simple" },
"optional": true,
"description": "Additional context data"
}
],
"returns": { "name": "void", "kind": "simple" }
},
{
"id": "Logger.info",
"name": "info",
"kind": "method",
"visibility": "public",
"docs": {
"summary": "Logs an informational message"
},
"params": [
{
"name": "message",
"type": { "name": "string", "kind": "simple" },
"description": "The message to log"
},
{
"name": "context",
"type": { "name": "TContext", "kind": "simple" },
"optional": true
}
],
"returns": { "name": "void", "kind": "simple" }
},
{
"id": "Logger.error",
"name": "error",
"kind": "method",
"visibility": "public",
"docs": {
"summary": "Logs an error message"
},
"params": [
{
"name": "message",
"type": { "name": "string", "kind": "simple" },
"description": "The error message"
},
{
"name": "context",
"type": { "name": "TContext", "kind": "simple" },
"optional": true
}
],
"returns": { "name": "void", "kind": "simple" }
}
],
"staticMethods": [
{
"id": "Logger.create",
"name": "create",
"kind": "method",
"static": true,
"visibility": "public",
"docs": {
"summary": "Creates a new logger instance with the given name"
},
"params": [
{
"name": "name",
"type": { "name": "string", "kind": "simple" },
"description": "Logger name for identification"
}
],
"returns": {
"name": "Logger",
"kind": "simple",
"ref": "Logger"
}
}
]
},
{
"id": "LoggerOptions",
"name": "LoggerOptions",
"kind": "interface",
"location": { "file": "src/Logger.ts", "line": 5 },
"visibility": "public",
"docs": {
"summary": "Configuration options for Logger"
},
"properties": [
{
"id": "LoggerOptions.level",
"name": "level",
"kind": "property",
"type": { "name": "LogLevel", "kind": "simple", "ref": "LogLevel" },
"optional": true,
"docs": {
"summary": "Minimum log level to output"
}
},
{
"id": "LoggerOptions.formatter",
"name": "formatter",
"kind": "property",
"type": { "name": "Formatter", "kind": "simple", "ref": "Formatter" },
"optional": true,
"docs": {
"summary": "Custom formatter for log messages"
}
},
{
"id": "LoggerOptions.timestamp",
"name": "timestamp",
"kind": "property",
"type": { "name": "boolean", "kind": "simple" },
"optional": true,
"docs": {
"summary": "Whether to include timestamps in log output"
}
}
]
},
{
"id": "LogLevel",
"name": "LogLevel",
"kind": "enum",
"location": { "file": "src/Logger.ts", "line": 1 },
"visibility": "public",
"docs": {
"summary": "Available log levels"
},
"members": [
{ "name": "Debug", "value": "0" },
{ "name": "Info", "value": "1" },
{ "name": "Warn", "value": "2" },
{ "name": "Error", "value": "3" },
{ "name": "Silent", "value": "4" }
]
},
{
"id": "Formatter",
"name": "Formatter",
"kind": "type",
"location": { "file": "src/Logger.ts", "line": 10 },
"visibility": "public",
"docs": {
"summary": "Function type for formatting log entries"
},
"typeParams": [
{
"name": "T",
"default": { "name": "unknown", "kind": "simple" }
}
],
"type": {
"name": "",
"kind": "function",
"members": [
{ "name": "entry", "kind": "simple" },
{ "name": "string", "kind": "simple" }
]
}
},
{
"id": "Cache",
"name": "Cache",
"kind": "class",
"location": { "file": "src/Cache.ts", "line": 8 },
"visibility": "public",
"docs": {
"summary": "A generic key-value cache with TTL support",
"examples": [
{
"code": "const cache = new Cache<string>({ ttl: 60000 });\ncache.set('user:1', userData);\nconst user = cache.get('user:1');",
"language": "typescript"
}
]
},
"typeParams": [
{
"name": "T",
"description": "Type of cached values"
}
],
"methods": [
{
"id": "Cache.get",
"name": "get",
"kind": "method",
"visibility": "public",
"docs": {
"summary": "Retrieves a value from the cache"
},
"params": [
{
"name": "key",
"type": { "name": "string", "kind": "simple" },
"description": "The cache key"
}
],
"returns": {
"name": "T",
"kind": "simple",
"nullable": true
},
"returnsDescription": "The cached value or null if not found or expired"
},
{
"id": "Cache.set",
"name": "set",
"kind": "method",
"visibility": "public",
"docs": {
"summary": "Stores a value in the cache"
},
"params": [
{
"name": "key",
"type": { "name": "string", "kind": "simple" },
"description": "The cache key"
},
{
"name": "value",
"type": { "name": "T", "kind": "simple" },
"description": "The value to cache"
},
{
"name": "ttl",
"type": { "name": "number", "kind": "simple" },
"optional": true,
"description": "Time-to-live in milliseconds (overrides default)"
}
],
"returns": { "name": "void", "kind": "simple" }
},
{
"id": "Cache.delete",
"name": "delete",
"kind": "method",
"visibility": "public",
"docs": {
"summary": "Removes a value from the cache"
},
"params": [
{
"name": "key",
"type": { "name": "string", "kind": "simple" },
"description": "The cache key to remove"
}
],
"returns": { "name": "boolean", "kind": "simple" },
"returnsDescription": "True if the key existed and was removed"
}
]
},
{
"id": "utils",
"name": "utils",
"kind": "module",
"location": { "file": "src/utils/index.ts", "line": 1 },
"docs": {
"summary": "Utility functions and classes"
},
"classes": [
{
"id": "StringUtils",
"name": "StringUtils",
"kind": "class",
"location": { "file": "src/utils/StringUtils.ts", "line": 5 },
"visibility": "public",
"docs": {
"summary": "String manipulation utilities"
},
"staticMethods": [
{
"id": "StringUtils.truncate",
"name": "truncate",
"kind": "method",
"static": true,
"visibility": "public",
"docs": {
"summary": "Truncates a string to the specified length",
"examples": [
{
"code": "StringUtils.truncate('Hello World', 5); // 'Hello...'",
"language": "typescript"
}
]
},
"params": [
{
"name": "str",
"type": { "name": "string", "kind": "simple" },
"description": "The string to truncate"
},
{
"name": "maxLength",
"type": { "name": "number", "kind": "simple" },
"description": "Maximum length"
},
{
"name": "suffix",
"type": { "name": "string", "kind": "simple" },
"optional": true,
"default": "'...'",
"description": "Suffix to append when truncated"
}
],
"returns": { "name": "string", "kind": "simple" }
},
{
"id": "StringUtils.capitalize",
"name": "capitalize",
"kind": "method",
"static": true,
"visibility": "public",
"docs": {
"summary": "Capitalizes the first letter of a string"
},
"params": [
{
"name": "str",
"type": { "name": "string", "kind": "simple" }
}
],
"returns": { "name": "string", "kind": "simple" }
}
]
}
]
}
],
"symbols": [
{ "id": "Logger", "name": "Logger", "qualifiedName": "Logger", "kind": "class", "file": "src/Logger.ts", "line": 15, "signature": "Logger<TContext = Record<string, unknown>>" },
{ "id": "Logger.constructor", "name": "constructor", "qualifiedName": "Logger.constructor", "kind": "constructor", "parent": "Logger", "file": "src/Logger.ts", "line": 20, "signature": "constructor(options?)" },
{ "id": "Logger.level", "name": "level", "qualifiedName": "Logger.level", "kind": "property", "parent": "Logger", "file": "src/Logger.ts", "line": 16 },
{ "id": "Logger.log", "name": "log", "qualifiedName": "Logger#log", "kind": "method", "parent": "Logger", "file": "src/Logger.ts", "line": 30, "signature": "log(level, message, context?)" },
{ "id": "Logger.info", "name": "info", "qualifiedName": "Logger#info", "kind": "method", "parent": "Logger", "file": "src/Logger.ts", "line": 40, "signature": "info(message, context?)" },
{ "id": "Logger.error", "name": "error", "qualifiedName": "Logger#error", "kind": "method", "parent": "Logger", "file": "src/Logger.ts", "line": 45, "signature": "error(message, context?)" },
{ "id": "Logger.create", "name": "create", "qualifiedName": "Logger.create", "kind": "method", "parent": "Logger", "file": "src/Logger.ts", "line": 50, "signature": "create(name)" },
{ "id": "LoggerOptions", "name": "LoggerOptions", "qualifiedName": "LoggerOptions", "kind": "interface", "file": "src/Logger.ts", "line": 5 },
{ "id": "LoggerOptions.level", "name": "level", "qualifiedName": "LoggerOptions.level", "kind": "property", "parent": "LoggerOptions", "file": "src/Logger.ts", "line": 6 },
{ "id": "LoggerOptions.formatter", "name": "formatter", "qualifiedName": "LoggerOptions.formatter", "kind": "property", "parent": "LoggerOptions", "file": "src/Logger.ts", "line": 7 },
{ "id": "LoggerOptions.timestamp", "name": "timestamp", "qualifiedName": "LoggerOptions.timestamp", "kind": "property", "parent": "LoggerOptions", "file": "src/Logger.ts", "line": 8 },
{ "id": "LogLevel", "name": "LogLevel", "qualifiedName": "LogLevel", "kind": "enum", "file": "src/Logger.ts", "line": 1 },
{ "id": "Formatter", "name": "Formatter", "qualifiedName": "Formatter", "kind": "type", "file": "src/Logger.ts", "line": 10, "signature": "Formatter<T = unknown>" },
{ "id": "Cache", "name": "Cache", "qualifiedName": "Cache", "kind": "class", "file": "src/Cache.ts", "line": 8, "signature": "Cache<T>" },
{ "id": "Cache.get", "name": "get", "qualifiedName": "Cache#get", "kind": "method", "parent": "Cache", "file": "src/Cache.ts", "line": 15, "signature": "get(key)" },
{ "id": "Cache.set", "name": "set", "qualifiedName": "Cache#set", "kind": "method", "parent": "Cache", "file": "src/Cache.ts", "line": 20, "signature": "set(key, value, ttl?)" },
{ "id": "Cache.delete", "name": "delete", "qualifiedName": "Cache#delete", "kind": "method", "parent": "Cache", "file": "src/Cache.ts", "line": 25, "signature": "delete(key)" },
{ "id": "utils", "name": "utils", "qualifiedName": "utils", "kind": "module", "file": "src/utils/index.ts", "line": 1 },
{ "id": "StringUtils", "name": "StringUtils", "qualifiedName": "utils.StringUtils", "kind": "class", "parent": "utils", "file": "src/utils/StringUtils.ts", "line": 5 },
{ "id": "StringUtils.truncate", "name": "truncate", "qualifiedName": "StringUtils.truncate", "kind": "method", "parent": "StringUtils", "file": "src/utils/StringUtils.ts", "line": 10, "signature": "truncate(str, maxLength, suffix?)" },
{ "id": "StringUtils.capitalize", "name": "capitalize", "qualifiedName": "StringUtils.capitalize", "kind": "method", "parent": "StringUtils", "file": "src/utils/StringUtils.ts", "line": 20, "signature": "capitalize(str)" }
],
"unresolvedReferences": []
}