{"_id":"@coding-club-iitg/ops-logger","_rev":"4-bd584445d67d9af8340b5a3b2ff7ad8e","name":"@coding-club-iitg/ops-logger","dist-tags":{"latest":"0.3.1"},"versions":{"0.1.0":{"name":"@coding-club-iitg/ops-logger","version":"0.1.0","license":"UNLICENSED","_id":"@coding-club-iitg/ops-logger@0.1.0","maintainers":[{"name":"cciitg","email":"codingclubiitguw@gmail.com"},{"name":"maydayv7","email":"maydayv7@gmail.com"}],"homepage":"https://github.com/Coding-Club-IITG/Ops/tree/main/logger","bugs":"https://github.com/Coding-Club-IITG/Ops/issues","dist":{"shasum":"7b2d24d028c71bcb4e6c2242d8fb652b6472b568","tarball":"https://registry.npmjs.org/@coding-club-iitg/ops-logger/-/ops-logger-0.1.0.tgz","fileCount":9,"integrity":"sha512-MurHBDY8dXMxV05ikCh0NIEBzA3F1mzSMqAAj6hIs+3Ab1FLz4Mn2qDm+9Kv6om1smnoHRWRqxHrv0lbavfRyA==","signatures":[{"sig":"MEUCIEdrmKYuLOi/b1fchUDI46ilEbwnVv4onL2GCg4U87DSAiEAtH72BX/Mvyd+eKhCgoHqXApG6bwC1GSzKIuUBJmkmR0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39030},"type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./next":{"types":"./dist/next.d.ts","import":"./dist/next.js","default":"./dist/next.js"},"./express":{"types":"./dist/express.d.ts","import":"./dist/express.js","default":"./dist/express.js"},"./package.json":"./package.json"},"scripts":{"test":"pnpm run build && node --test test/*.test.mjs","build":"pnpm run clean && tsc -p tsconfig.build.json && esbuild index.ts express.ts next.ts --bundle --platform=node --format=esm --target=node18 --outdir=dist --external:@coding-club-iitg/ops-contract --external:@opentelemetry/api --external:@opentelemetry/sdk-trace-base","check":"pnpm run test && pnpm run typecheck && pnpm run check:pack","clean":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"","typecheck":"tsc -p tsconfig.build.json --noEmit","check:pack":"pnpm pack --dry-run"},"_npmUser":{"name":"maydayv7","email":"maydayv7@gmail.com"},"repository":{"url":"git+https://github.com/Coding-Club-IITG/Ops.git","type":"git","directory":"logger"},"description":"Safe structured logging and Ops telemetry for Coding Club IITG services","directories":{},"sideEffects":false,"_nodeVersion":"24.18.0","dependencies":{"@coding-club-iitg/ops-contract":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.2","typescript":"^6.0.3","@types/node":"^26.2.0","@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-trace-base":"^2.0.0"},"peerDependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-trace-base":"^2.0.0"},"peerDependenciesMeta":{"@opentelemetry/api":{"optional":true},"@opentelemetry/sdk-trace-base":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ops-logger_0.1.0_1787820807919_0.6465982404937625","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@coding-club-iitg/ops-logger","version":"0.2.0","license":"UNLICENSED","_id":"@coding-club-iitg/ops-logger@0.2.0","maintainers":[{"name":"cciitg","email":"codingclubiitguw@gmail.com"},{"name":"maydayv7","email":"maydayv7@gmail.com"}],"homepage":"https://github.com/Coding-Club-IITG/Ops/tree/main/logger","bugs":{"url":"https://github.com/Coding-Club-IITG/Ops/issues"},"dist":{"shasum":"d1c66ad3d89fc8904081cdfa417101a24d147fdd","tarball":"https://registry.npmjs.org/@coding-club-iitg/ops-logger/-/ops-logger-0.2.0.tgz","fileCount":9,"integrity":"sha512-d2jpF4Na7LSOnttjzgK4fXEc/srMdS7EU3ZPfE5Tej4G/MaP+Arj2qxjZOn1SzrBsqLYzVXDA2p0uQo9p1Uthw==","signatures":[{"sig":"MEYCIQDvxgTYG/oK2U4c3FVW9QBKTugT3rbNQfgu3RKq8x7qVwIhAOcTBczM9x0fwJph86USYqTWWGQvLtedpdq0O8QTEAQE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coding-club-iitg%2fops-logger@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":39139},"type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./next":{"types":"./dist/next.d.ts","import":"./dist/next.js","default":"./dist/next.js"},"./express":{"types":"./dist/express.d.ts","import":"./dist/express.js","default":"./dist/express.js"},"./package.json":"./package.json"},"gitHead":"ec8a6a8fbdede539c10c4381c65917af3c35b37f","scripts":{"test":"pnpm run build && node --test test/*.test.mjs","build":"pnpm run clean && tsc -p tsconfig.build.json && esbuild index.ts express.ts next.ts --bundle --platform=node --format=esm --target=node18 --outdir=dist --external:@coding-club-iitg/ops-contract --external:@opentelemetry/api --external:@opentelemetry/sdk-trace-base","check":"pnpm run test && pnpm run typecheck && pnpm run check:pack","clean":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"","prepack":"pnpm run build","prebuild":"pnpm --filter @coding-club-iitg/ops-contract build","typecheck":"tsc -p tsconfig.build.json --noEmit","check:pack":"pnpm pack --dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b4797737-9ee1-453c-849a-88a87bf57b55"}},"repository":{"url":"git+https://github.com/Coding-Club-IITG/Ops.git","type":"git","directory":"logger"},"_npmVersion":"11.17.0","description":"Safe structured logging and Ops telemetry for Coding Club IITG services","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@coding-club-iitg/ops-contract":"workspace:^"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.2","typescript":"^6.0.3","@types/node":"^26.2.0","@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-trace-base":"^2.0.0"},"peerDependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-trace-base":"^2.0.0"},"peerDependenciesMeta":{"@opentelemetry/api":{"optional":true},"@opentelemetry/sdk-trace-base":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ops-logger_0.2.0_1787839402959_0.38227588719225536","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@coding-club-iitg/ops-logger","version":"0.3.0","license":"UNLICENSED","_id":"@coding-club-iitg/ops-logger@0.3.0","maintainers":[{"name":"cciitg","email":"codingclubiitguw@gmail.com"},{"name":"maydayv7","email":"maydayv7@gmail.com"}],"homepage":"https://github.com/Coding-Club-IITG/Ops/tree/main/logger","bugs":{"url":"https://github.com/Coding-Club-IITG/Ops/issues"},"dist":{"shasum":"430cdd84989e2dbd08472c7bcbb701bd523cb195","tarball":"https://registry.npmjs.org/@coding-club-iitg/ops-logger/-/ops-logger-0.3.0.tgz","fileCount":9,"integrity":"sha512-LueAOVHQZpaso9EuEDcipDRVDOtIcTnw8wDFSxd1/o5cIl8T0nTS08tGBt0rIgo/fOzd2ykAU0MBR8ExNUM+6g==","signatures":[{"sig":"MEUCID+zmWN0aYN32cwlAJCHGbPKwMuhUzwvylsKyuJ/8HutAiEAv9I2WqMvdtOXwpO/V40R2McvRF/xd/lEffue86F60uE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coding-club-iitg%2fops-logger@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":45116},"type":"module","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./next":{"types":"./dist/next.d.ts","import":"./dist/next.js","default":"./dist/next.js"},"./express":{"types":"./dist/express.d.ts","import":"./dist/express.js","default":"./dist/express.js"},"./package.json":"./package.json"},"gitHead":"bec5c248590b02c40aac8a9d54ea8e8d307a4c61","scripts":{"test":"pnpm run build && node --test test/*.test.mjs","build":"pnpm run clean && tsc -p tsconfig.build.json && esbuild index.ts express.ts next.ts --bundle --platform=node --format=esm --target=node18 --outdir=dist --external:@coding-club-iitg/ops-contract --external:@opentelemetry/api --external:@opentelemetry/sdk-trace-base","check":"pnpm run test && pnpm run typecheck && pnpm run check:pack","clean":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"","prepack":"pnpm run build","prebuild":"pnpm --filter @coding-club-iitg/ops-contract build","typecheck":"tsc -p tsconfig.build.json --noEmit","check:pack":"pnpm pack --dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b4797737-9ee1-453c-849a-88a87bf57b55"}},"repository":{"url":"git+https://github.com/Coding-Club-IITG/Ops.git","type":"git","directory":"logger"},"_npmVersion":"11.17.0","description":"Safe structured logging and Ops telemetry for Coding Club IITG services","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@coding-club-iitg/ops-contract":"workspace:^"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"esbuild":"^0.28.2","typescript":"^6.0.3","@types/node":"^26.2.0","@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-trace-base":"^2.0.0"},"peerDependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-trace-base":"^2.0.0"},"peerDependenciesMeta":{"@opentelemetry/api":{"optional":true},"@opentelemetry/sdk-trace-base":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/ops-logger_0.3.0_1787954239137_0.18107529882678475","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@coding-club-iitg/ops-logger","version":"0.3.1","description":"Safe structured logging and Ops telemetry for Coding Club IITG services","type":"module","sideEffects":false,"license":"UNLICENSED","repository":{"type":"git","url":"git+https://github.com/Coding-Club-IITG/Ops.git","directory":"logger"},"homepage":"https://github.com/Coding-Club-IITG/Ops/tree/main/logger","bugs":"https://github.com/Coding-Club-IITG/Ops/issues","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./express":{"types":"./dist/express.d.ts","import":"./dist/express.js","default":"./dist/express.js"},"./next":{"types":"./dist/next.d.ts","import":"./dist/next.js","default":"./dist/next.js"},"./package.json":"./package.json"},"publishConfig":{"access":"public"},"dependencies":{"@coding-club-iitg/ops-contract":"^0.3.0"},"peerDependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-trace-base":"^2.0.0"},"peerDependenciesMeta":{"@opentelemetry/api":{"optional":true},"@opentelemetry/sdk-trace-base":{"optional":true}},"devDependencies":{"@opentelemetry/api":"^1.9.0","@opentelemetry/sdk-trace-base":"^2.0.0","@types/node":"^26.2.0","esbuild":"^0.28.2","typescript":"^6.0.3"},"scripts":{"clean":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"","prebuild":"pnpm --filter @coding-club-iitg/ops-contract build","build":"pnpm run clean && tsc -p tsconfig.build.json && esbuild index.ts express.ts next.ts --bundle --platform=node --format=esm --target=node18 --outdir=dist --external:@coding-club-iitg/ops-contract --external:@opentelemetry/api --external:@opentelemetry/sdk-trace-base","test":"pnpm run build && node --test test/*.test.mjs","typecheck":"tsc -p tsconfig.build.json --noEmit","check:pack":"pnpm pack --dry-run","check":"pnpm run test && pnpm run typecheck && pnpm run check:pack"},"_nodeVersion":"24.19.0","_id":"@coding-club-iitg/ops-logger@0.3.1","dist":{"integrity":"sha512-OEWdQDEqh9P8TUZ8IBxtDe1PEjRhVgURI3qBUKrvIg7aYKXTgVdGLcDNgkDHrENOKsxP5Hh1aaw0cqf5N7YQ1Q==","shasum":"b44f7a98a4d5e32088d92569ea4ca4f9b955edc3","tarball":"https://registry.npmjs.org/@coding-club-iitg/ops-logger/-/ops-logger-0.3.1.tgz","fileCount":9,"unpackedSize":45077,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@coding-club-iitg%2fops-logger@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFUZA/gOJI1ip3SgwNT4OUbYE5fNjRFCC1hnsY0hY3nZAiEA1IKXxZH4vmjtwca74v77X71YCfWeQK3khSNK/8h+txE="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b4797737-9ee1-453c-849a-88a87bf57b55"}},"directories":{},"maintainers":[{"name":"cciitg","email":"codingclubiitguw@gmail.com"},{"name":"maydayv7","email":"maydayv7@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ops-logger_0.3.1_1787985353085_0.47378403239095657"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-27T08:53:27.808Z","modified":"2026-08-29T06:35:53.676Z","0.1.0":"2026-08-27T08:53:28.056Z","0.2.0":"2026-08-27T14:03:23.117Z","0.3.0":"2026-08-28T21:57:19.283Z","0.3.1":"2026-08-29T06:35:53.240Z"},"bugs":"https://github.com/Coding-Club-IITG/Ops/issues","license":"UNLICENSED","homepage":"https://github.com/Coding-Club-IITG/Ops/tree/main/logger","repository":{"type":"git","url":"git+https://github.com/Coding-Club-IITG/Ops.git","directory":"logger"},"description":"Safe structured logging and Ops telemetry for Coding Club IITG services","maintainers":[{"name":"cciitg","email":"codingclubiitguw@gmail.com"},{"name":"maydayv7","email":"maydayv7@gmail.com"}],"readme":"# `@coding-club-iitg/ops-logger`\n\nCanonical, safe logger for Coding Club IITG projects.\nNode.js 18+ is required.\nThe package is ESM and includes TypeScript declarations - plain JavaScript consumers can import it normally.\n\n```ts\nimport { createOpsLogger } from \"@coding-club-iitg/ops-logger\";\n\nconst logger = createOpsLogger({\n  project: \"ccw\",\n  service: \"ccw-web\",\n  ingestionUrl: process.env.OPS_INGESTION_URL!,\n  secret: process.env.OPS_INGESTION_SECRET!,\n  enabled: process.env.NODE_ENV === \"production\",\n});\n\nlogger.error(\"Mess assignment failed\", {\n  error,\n  attributes: {\n    operation: \"assign-mess\",\n    dependency: \"mongodb\",\n    retryable: false,\n  },\n});\n\nlogger.metric(\"course.view\", {\n  dimensions: { courseCode: \"CS101\", studentYear: 2 },\n});\n```\n\nMetrics default to a value of `1`, are delivered to the sibling metrics ingestion endpoint independently of log export levels,\nand are not printed to the application console.\nSet `metricIngestionUrl` only when the endpoints are not siblings.\n\nEvery level is written as safe structured JSON to the console.\n`warn`, `error`, and `fatal` are exported by default (set `exportLevels` explicitly to change this).\nDelivery has a 2 second default timeout, at most 8 in-flight requests, no retries, and never throws into application code.\nInspect `deliveryStatus()` for pending/dropped counts and `await logger.flush()` during graceful shutdown.\n\nOnly contract attributes are accepted.\nDo not put request bodies, headers, query values, raw URLs, cookies, IP addresses, user agents, uploads, or identity data in messages or attributes.\nWorker/job correlation remains explicit through `details.correlationId`.\n\n## Express\n\n```ts\nimport { createExpressOpsLogger } from \"@coding-club-iitg/ops-logger/express\";\n\nconst { logger, middleware } = createExpressOpsLogger(config);\napp.use(middleware);\n```\n\nThe middleware generates a UUID locally for every request, uses `AsyncLocalStorage`, and emits one completion event.\nIt ignores inbound correlation headers and raw URLs.\nRegister it after Express has resolved route templates if you want matched templates; unmatched requests use the fixed `unmatched` fallback.\n\n## Next.js\n\nNext.js 16 with OpenTelemetry 2.x is the initially supported combination.\nInstall `@opentelemetry/api` and `@opentelemetry/sdk-trace-base`, then register the returned processor with the Node SDK:\n\n```ts\nimport { createNextOpsLogger } from \"@coding-club-iitg/ops-logger/next\";\nconst { logger, spanProcessor } = createNextOpsLogger(config);\n```\n\nOnly completed `/api` request spans with allow-listed scalar attributes are mapped.\nApplication logs use the active trace ID.\nFull spans and framework request objects are never serialized.\n","readmeFilename":""}