{"_id":"@aliksend/context","_rev":"1-574192e95e96458849794879225107da","name":"@aliksend/context","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@aliksend/context","version":"1.0.0","keywords":["async","context","logging"],"author":{"name":"Alik Send"},"license":"MIT","_id":"@aliksend/context@1.0.0","maintainers":[{"name":"aliksend","email":"aliknoname@gmail.com"}],"homepage":"https://github.com/aliksend/modular-service#readme","bugs":{"url":"https://github.com/aliksend/modular-service/issues"},"dist":{"shasum":"1fee63687046d5c5a146e68e8aec702b1f096e17","tarball":"https://registry.npmjs.org/@aliksend/context/-/context-1.0.0.tgz","fileCount":19,"integrity":"sha512-dOpfDG1dZpFlCHcWKCtt7aLl8oEt2S8upwuegiiZUzSfG+DLIe9RuFInYaM+lBmLB32/3fQjlTNdhga2/M0pPw==","signatures":[{"sig":"MEYCIQDGSUWWIV8qFHBOlyBuvZZmVJWHmTJck9g11Kx56it7lQIhALvBIcjpNt12yGUMDCIv2Too+nibzRRXQ0LgLzN2Jt6g","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":36830},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"f105fbd873104524b3765525d2189c706cda15cc","scripts":{"lint":"npx @modular-service/linter --fix","test":"node --require ts-node/register --test ./src/*.test.ts","build":"rm -rf dist && tsc","prepublishOnly":"npm run build"},"_npmUser":{"name":"aliksend","email":"aliknoname@gmail.com"},"repository":{"url":"git+https://github.com/aliksend/modular-service.git","type":"git"},"_npmVersion":"9.8.1","description":"Async storage for context","directories":{},"_nodeVersion":"18.18.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3"},"_npmOperationalInternal":{"tmp":"tmp/context_1.0.0_1707736821713_0.9915527967718492","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@aliksend/context","version":"1.0.1","description":"Async storage for context","keywords":["async","context","logging"],"repository":{"type":"git","url":"git+https://github.com/aliksend/node-packages.git"},"license":"MIT","author":{"name":"Alik Send"},"main":"dist/index.js","types":"dist/index.d.ts","scripts":{"prepublishOnly":"npm run build","test":"node --require ts-node/register --test ./src/*.test.ts","build":"rm -rf dist && tsc","lint":"npx @aliksend/linter --fix"},"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3"},"publishConfig":{"access":"public"},"_id":"@aliksend/context@1.0.1","gitHead":"8b3b07640506f18b438c10884c4193cfce2d49e9","bugs":{"url":"https://github.com/aliksend/node-packages/issues"},"homepage":"https://github.com/aliksend/node-packages#readme","_nodeVersion":"22.11.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-XkCxcep5KUoH++vD8GNNEUH9UbAGxMlWvglsREtWnLUW7tlWEYCKV4AQ/acK9Shzju1mz4RKy0Se9cfqsPXSJg==","shasum":"b36496715fb0fd1d6cf421425b4b8375c1cb0190","tarball":"https://registry.npmjs.org/@aliksend/context/-/context-1.0.1.tgz","fileCount":19,"unpackedSize":35426,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDs3rWKEhokn3h/peYjNYqVoIS5RY8uxCYqOKI/C9VRDwIhAN1t5cZYLQVLu5XmAUXGoOS8Sx9Khvaz7GUK/0GO+HPa"}]},"_npmUser":{"name":"aliksend","email":"aliknoname@gmail.com"},"directories":{},"maintainers":[{"name":"aliksend","email":"aliknoname@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/context_1.0.1_1734316124310_0.09620334081393889"},"_hasShrinkwrap":false}},"time":{"created":"2024-02-12T11:20:21.577Z","modified":"2024-12-16T02:28:44.662Z","1.0.0":"2024-02-12T11:20:21.854Z","1.0.1":"2024-12-16T02:28:44.477Z"},"bugs":{"url":"https://github.com/aliksend/node-packages/issues"},"author":{"name":"Alik Send"},"license":"MIT","homepage":"https://github.com/aliksend/node-packages#readme","keywords":["async","context","logging"],"repository":{"type":"git","url":"git+https://github.com/aliksend/node-packages.git"},"description":"Async storage for context","maintainers":[{"name":"aliksend","email":"aliknoname@gmail.com"}],"readme":"# context\n\nCan be used to track the context of current request.\n\n```typescript\nimport express from 'express'\nimport { Context } from '@aliksend/context'\nimport pino from 'pino'\n\nconst prettyLogs = process.env.PRETTY_LOGS === 'true'\nconst logLevel = process.env.LOG_LEVEL\n\nContext.init(pino({\n  formatters: {\n    level: (label) => ({ level: label }),\n    bindings: () => ({}),\n  },\n  transport: prettyLogs\n    ? {\n        target: 'pino-pretty',\n        options: {\n          ignore: 'hostname,requestId,contextId',\n        },\n      }\n    : undefined,\n  level: logLevel,\n}))\n\nconst app = express()\n\napp.use((req, res, next) => {\n  const context = new Context('http request', { requestId: req.header('x-request-id') })\n  context.logInfo('request', { method: req.method, url: req.url })\n\n  if (req.header.authorization != null) {\n    context.setAuth({\n      // TODO\n      sessionId: req.header.authorization,\n      userId: req.header.authorization,\n      permissions: []\n    })\n  }\n\n  let send = res.send\n  res.send = (body: any) => {\n    context.logInfo('response', { status: res.statusCode, body })\n    res.send = send\n    send(body)\n  }\n\n  context.wrap(() => {\n    next()\n  }, false)\n})\n\napp.get('/ping', (req, res) => {\n  Context.current().logInfo('ping called')\n  res.send('pong')\n})\n\n```\n","readmeFilename":"README.md"}