{"_id":"@a-company/paradigm-logger","name":"@a-company/paradigm-logger","dist-tags":{"latest":"3.5.1"},"versions":{"3.5.1":{"name":"@a-company/paradigm-logger","version":"3.5.1","description":"Symbol-typed structured logging for Paradigm","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsup src/index.ts --format cjs,esm --dts","dev":"tsup src/index.ts --format cjs,esm --dts --watch"},"keywords":["paradigm","logger","structured-logging"],"license":"MIT","devDependencies":{"tsup":"^8.0.0","typescript":"^5.0.0"},"gitHead":"fcbc9a4f4013712f64ea288e51db5b451ab8c877","_id":"@a-company/paradigm-logger@3.5.1","_nodeVersion":"24.12.0","_npmVersion":"11.7.0","dist":{"integrity":"sha512-vZqr36znxOql9kCDjACstZrNllDqGUv6lEwfgOu6Ipy3Xoh0EWhB4+Nm6uDtcTgfxh2wp1ooGdncYOMmWM1oKw==","shasum":"41bff56a029a50dcb997e92d28a8f1c74ee4afab","tarball":"https://registry.npmjs.org/@a-company/paradigm-logger/-/paradigm-logger-3.5.1.tgz","fileCount":6,"unpackedSize":21718,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIH7E6tns5QEjshxeQujhQAVn6/z+EHFrvQ85SmdOFwzSAiEAim8bcIfp58P1D/iNhpjCiZYCWkueaBP9JG9EsUcmmz4="}]},"_npmUser":{"name":"ascend42","email":"ascend@a-company.org"},"directories":{},"maintainers":[{"name":"ascend42","email":"ascend@a-company.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/paradigm-logger_3.5.1_1772570375677_0.7715180519751184"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-03T20:39:35.588Z","3.5.1":"2026-03-03T20:39:35.840Z","modified":"2026-03-03T20:39:36.050Z"},"maintainers":[{"name":"ascend42","email":"ascend@a-company.org"}],"description":"Symbol-typed structured logging for Paradigm","keywords":["paradigm","logger","structured-logging"],"license":"MIT","readme":"# @a-company/paradigm-logger\n\n> Symbol-typed structured logging for Paradigm v2\n\n## Installation\n\n```bash\nnpm install @a-company/paradigm-logger\n```\n\n## Usage\n\n```typescript\nimport { log } from '@a-company/paradigm-logger';\n\n// Component — any documented code unit\nlog.component('#user-service').info('User created', { userId });\nlog.component('#database').debug('Query executed', { duration });\n\n// Gate — authorization checkpoints\nlog.gate('^authenticated').warn('Access denied', { userId });\nlog.gate('^admin-only').info('Admin access granted');\n\n// Signal — events and side effects\nlog.signal('!payment-completed').info('Payment processed', { amount });\nlog.signal('!login-failed').error('Invalid credentials', { email });\n\n// Flow — multi-step processes\nlog.flow('$checkout').info('Step completed', { step: 2, total: 4 });\nlog.flow('$onboarding').debug('User reached final step');\n\n// Aspect — cross-cutting rules\nlog.aspect('~audit-required').debug('Audit logged', { operation });\nlog.aspect('~rate-limited').warn('Rate limit approaching', { remaining: 5 });\n\n// Raw — untyped symbol\nlog.raw('custom-prefix').info('Custom log entry');\n```\n\n## API\n\n### `ParadigmLogger`\n\nCreate a custom logger instance:\n\n```typescript\nimport { ParadigmLogger } from '@a-company/paradigm-logger';\n\nconst log = new ParadigmLogger({\n  level: 'info',           // 'debug' | 'info' | 'warn' | 'error'\n  format: 'pretty',        // 'pretty' | 'json'\n  symbols: ['#', '^'],     // Filter to specific symbol types\n  output: (line) => {},    // Custom output handler\n});\n```\n\n### Symbol Methods\n\n| Method | Symbol | Prefix |\n|--------|--------|--------|\n| `log.component(symbol)` | Component | `#` |\n| `log.gate(symbol)` | Gate | `^` |\n| `log.signal(symbol)` | Signal | `!` |\n| `log.flow(symbol)` | Flow | `$` |\n| `log.aspect(symbol)` | Aspect | `~` |\n| `log.raw(symbol)` | Raw | (none) |\n\nEach returns a `SymbolLogger` with `.debug()`, `.info()`, `.warn()`, `.error()`, and `.start()` methods.\n\n### Duration Tracking\n\n```typescript\nconst tracker = log.component('#api-handler').start('Processing request', { path: '/api/users' });\n\n// ... do work ...\n\ntracker.success('Request completed', { statusCode: 200 });\n// or\ntracker.error('Request failed', { statusCode: 500 });\n```\n\n### Correlation IDs\n\n```typescript\nimport { withCorrelation, createCorrelationId } from '@a-company/paradigm-logger';\n\nconst correlationId = createCorrelationId();\nwithCorrelation(correlationId, () => {\n  // All logs within this callback include the correlation ID\n  log.component('#handler').info('Processing');\n});\n```\n\n## Environment Variables\n\n| Variable | Description | Default |\n|----------|-------------|---------|\n| `LOG_LEVEL` | Minimum log level | `debug` (dev), `info` (prod) |\n| `PARADIGM_LOG_FORMAT` | Output format (`pretty` or `json`) | `pretty` (dev), `json` (prod) |\n| `PARADIGM_SYMBOLS` | Comma-separated symbol prefixes to include | all |\n| `NODE_ENV` | Affects defaults for level and format | — |\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-9053c1cb8fd2f13a058869628c36d324"}