{"_id":"@fishka/logs","name":"@fishka/logs","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@fishka/logs","description":"Console.log transformation pipes","version":"1.0.0","license":"Apache-2.0","main":"./dist/cjs/index.js","module":"./dist/esm/index.js","types":"./dist/esm/index.d.ts","private":false,"sideEffects":false,"scripts":{"prebuild":"npm run clean","build:esm":"tsc -p tsconfig.esm.json","build:cjs":"tsc -p tsconfig.cjs.json","build":"npm run build:esm && npm run build:cjs","clean":"rimraf ./dist","lint":"eslint .","test":"jest --runInBand","release":"npm run clean && npm run build && npm run lint && npm run test && npm publish"},"devDependencies":{"@typescript-eslint/eslint-plugin":"^8.55.0","@typescript-eslint/parser":"^8.55.0","eslint":"^10.0.0","eslint-plugin-unused-imports":"^4.4.1","jest":"^30.2.0","prettier":"^3.8.1","rimraf":"^6.1.2","ts-jest":"^29.4.6","typescript":"^5.9.3"},"engines":{"node":">=10"},"keywords":["logging","console","log","json","console.log","console.debug"],"exports":{".":{"types":"./dist/esm/index.d.ts","import":"./dist/esm/index.js","require":"./dist/cjs/index.js"}},"repository":{"type":"git","url":"https://gitea.com/fishka/assertions.git"},"publishConfig":{"access":"public"},"gitHead":"4a62f85fabeb5fe5d313c5688e28607a35ea2acc","_id":"@fishka/logs@1.0.0","_nodeVersion":"20.19.2","_npmVersion":"11.9.0","dist":{"integrity":"sha512-n+XpGf4ouqH1L2MdUhpdOZLWpPwjUrUeva6sL2XFBIJysAXgh3Q9ttpBvqArw7Qzw8vQ6mZvHQ4drwRmzJDtUw==","shasum":"4003f7586d9b41bd5a83ce3ba79f3bd7ed877961","tarball":"https://registry.npmjs.org/@fishka/logs/-/logs-1.0.0.tgz","fileCount":102,"unpackedSize":187608,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIA/UtwkxWGA5bK9c+pDNSGHqWGmzzwA13Px0wAILewcoAiBO1A8MXseKmaHnE8LPq+eDKE5XzDHi8pTztvQMIspcgw=="}]},"_npmUser":{"name":"fishka","email":"fishka@ramigo.org"},"directories":{},"maintainers":[{"name":"fishka","email":"fishka@ramigo.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/logs_1.0.0_1771215104174_0.39367163610120204"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-16T04:11:44.062Z","1.0.0":"2026-02-16T04:11:44.318Z","modified":"2026-02-16T04:11:44.551Z"},"maintainers":[{"name":"fishka","email":"fishka@ramigo.org"}],"description":"Console.log transformation pipes","keywords":["logging","console","log","json","console.log","console.debug"],"repository":{"type":"git","url":"https://gitea.com/fishka/assertions.git"},"license":"Apache-2.0","readme":"# @fishka/logs\n\nConsole.log transformation pipes for structured logging in TypeScript.\n\n## Installation\n\n```bash\nnpm install @fishka/logs\n```\n\n## Quick Start\n\n```typescript\nimport {createJsonStringifyPipe, installConsoleOverride} from '@fishka/logs';\n\n// Install JSON stringify pipe\ninstallConsoleOverride(createJsonStringifyPipe());\n\n// Now all console logs are JSON formatted\nconsole.log('User logged in', {userId: 123, action: 'login'});\n// Output: {\"message\":\"User logged in $1\",\"$1\":{\"userId\":123,\"action\":\"login\"},\"level\":\"log\",\"timestamp\":\"2026-02-15T04:30:00.000Z\",\"message_id\":\"a1b2c3d4-e5f6-7890-abcd-ef1234567890\"}\n```\n\n## Pipes\n\n### JsonStringifyPipe\n\nConverts console arguments to a JSON string:\n\n```typescript\nimport {createJsonStringifyPipe, installConsoleOverride} from '@fishka/logs';\n\ninstallConsoleOverride(createJsonStringifyPipe());\n\nconsole.log('Hello', {data: 'value'});\n// {\"message\":\"Hello $1\",\"$1\":{\"data\":\"value\"},\"level\":\"log\",\"timestamp\":\"...\",\"message_id\":\"...\"}\n```\n\n### JsonPipe\n\nConverts console arguments to a JSON object (without stringifying):\n\n```typescript\nimport {createJsonPipe, installConsoleOverride} from '@fishka/logs';\n\nconst pipe = createJsonPipe();\ninstallConsoleOverride(pipe);\n\n// Access last message ID\nconsole.log('Test');\nconsole.log(pipe.getLastMessageId()); // \"a1b2c3d4-...\"\n\n// Set next message ID\npipe.setNextMessageId('custom-id-123');\nconsole.log('Test'); // Uses \"custom-id-123\" as message_id\n```\n\n### LogLevelFilterPipe\n\nFilter logs by level:\n\n```typescript\nimport {createLogLevelFilterPipe, installConsoleOverride} from '@fishka/logs';\n\n// Exclude debug and trace logs\ninstallConsoleOverride(createLogLevelFilterPipe({\n    excludedLogLevels: ['debug', 'trace']\n}));\n\nconsole.debug('This will not appear');\nconsole.log('This will appear');\n```\n\n### LogMessageFilterPipe\n\nFilter logs by message content:\n\n```typescript\nimport {createLogMessageFilterPipe, installConsoleOverride} from '@fishka/logs';\n\n// Exclude messages containing \"password\"\ninstallConsoleOverride(createLogMessageFilterPipe({\n    excludedMessagePatterns: [/password/i]\n}));\n\nconsole.log('User password: secret123'); // Filtered out\nconsole.log('User login: john'); // Allowed\n```\n\n### LogCachePipe\n\nCache recent logs:\n\n```typescript\nimport {createLogCachePipe, installConsoleOverride} from '@fishka/logs';\n\nconst cachePipe = createLogCachePipe({maxCacheSize: 100});\ninstallConsoleOverride(cachePipe);\n\nconsole.log('Message 1');\nconsole.log('Message 2');\n\n// Access cached logs\nconsole.log(cachePipe.getLogCache()); // Array of recent logs\n```\n\n### DateTimePipe\n\nAdd timestamps to logs:\n\n```typescript\nimport {createDateTimePipe, installConsoleOverride} from '@fishka/logs';\n\ninstallConsoleOverride(createDateTimePipe());\n\nconsole.log('Event');\n// [2026-02-15T04:30:00.000Z] Event\n```\n\n## Combining Pipes\n\nInstall multiple pipes in order:\n\n```typescript\nimport {\n    createLogLevelFilterPipe,\n    createJsonStringifyPipe,\n    installConsoleOverrides\n} from '@fishka/logs';\n\ninstallConsoleOverrides(\n    createLogLevelFilterPipe({excludedLogLevels: ['debug']}),\n    createJsonStringifyPipe()\n);\n```\n\n## Uninstalling Pipes\n\n```typescript\nimport {uninstallConsoleOverride, uninstallAllConsoleOverrides} from '@fishka/logs';\n\n// Remove specific pipe\nuninstallConsoleOverride(pipe);\n\n// Remove all pipes\nuninstallAllConsoleOverrides();\n```\n\n## Custom Pipe\n\nCreate your own pipe:\n\n```typescript\nimport {LogPipe, installConsoleOverride} from '@fishka/logs';\n\nconst myPipe: LogPipe = (level, ...args) => {\n    // Transform arguments\n    return args.map(arg => typeof arg === 'string' ? arg.toUpperCase() : arg);\n};\n\ninstallConsoleOverride(myPipe);\n\nconsole.log('hello'); // HELLO\n```\n\nSuppress logs by returning empty array:\n\n```typescript\nconst suppressPipe: LogPipe = () => [];\n```\n\nChange log level by returning object:\n\n```typescript\nconst upgradePipe: LogPipe = (level, ...args) => ({\n    level: 'error', // Upgrade all logs to error\n    args\n});\n```\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md","_rev":"1-1557671dcfcd98a8957aa9d71d0c0e35"}