{"_id":"@apirelio/express","_rev":"2-6a06a0c31e1630bbf2deac32ecc2a9d4","name":"@apirelio/express","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@apirelio/express","version":"0.1.0","keywords":["apirelio","express","api","analytics","observability"],"license":"MIT","_id":"@apirelio/express@0.1.0","maintainers":[{"name":"pryznar","email":"pryznar@gmail.com"}],"homepage":"https://apirelio.com/docs","bugs":{"url":"https://github.com/pryznar/apirelio-express/issues"},"dist":{"shasum":"a5a01297b8b5dce2e010abf19a3d9134c438ebc4","tarball":"https://registry.npmjs.org/@apirelio/express/-/express-0.1.0.tgz","fileCount":8,"integrity":"sha512-mFvn9wvWavhQSwCHeR8hoxfxIAxwgTQVSpTvR9M+jbqFGeUjBW10gVdNRDgk5eUio0K5ZNxWi9/COORoFx6MwQ==","signatures":[{"sig":"MEQCIDFLYSmdRL/VCzjnowKQp5L1JQ1veW+2oeX0gEac9py8AiBK9IJqgDnU2JfzO5gNgazQ+DQ4CJF7SY6KD+n++u60fA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11935},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"4c872b639aff68f4f8775df11b6129b6a84fa751","scripts":{"test":"vitest run","build":"tsup src/index.ts --format esm,cjs --dts --clean","typecheck":"tsc --noEmit","prepublishOnly":"npm run typecheck && npm test && npm run build"},"_npmUser":{"name":"pryznar","email":"pryznar@gmail.com"},"overrides":{"tsup":{"esbuild":"^0.28.1"}},"repository":{"url":"git+https://github.com/pryznar/apirelio-express.git","type":"git"},"_npmVersion":"11.9.0","description":"Fail-safe customer-aware API analytics middleware for Express.","directories":{},"sideEffects":false,"_nodeVersion":"25.6.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^4.0.0","esbuild":"^0.28.1","express":"^5.1.0","supertest":"^7.1.0","typescript":"^5.9.0","@types/node":"^24.0.0","@apirelio/core":"file:../node-core","@types/express":"^5.0.0","@types/supertest":"^6.0.0"},"peerDependencies":{"express":">=4.18 <6","@apirelio/core":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/express_0.1.0_1785508201398_0.782752722045682","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@apirelio/express","version":"0.2.0","description":"Fail-safe customer-aware API analytics middleware for Express.","keywords":["apirelio","express","api","analytics","observability"],"license":"MIT","repository":{"type":"git","url":"git+https://github.com/pryznar/apirelio-express.git"},"homepage":"https://apirelio.com/docs","bugs":{"url":"https://github.com/pryznar/apirelio-express/issues"},"type":"module","sideEffects":false,"main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"engines":{"node":">=20"},"scripts":{"build":"tsup src/index.ts --format esm,cjs --dts --clean","typecheck":"tsc --noEmit","test":"vitest run","prepublishOnly":"npm run typecheck && npm test && npm run build"},"peerDependencies":{"@apirelio/core":"^0.2.0","express":">=4.18 <6"},"devDependencies":{"@apirelio/core":"file:../node-core","@types/express":"^5.0.0","@types/node":"^24.0.0","@types/supertest":"^6.0.0","esbuild":"^0.28.1","express":"^5.1.0","supertest":"^7.1.0","tsup":"^8.5.0","typescript":"^5.9.0","vitest":"^4.0.0"},"publishConfig":{"access":"public"},"overrides":{"tsup":{"esbuild":"^0.28.1"}},"gitHead":"9b109fb2217eba8229f832b49c816b815631b5f7","_id":"@apirelio/express@0.2.0","_nodeVersion":"25.6.1","_npmVersion":"11.9.0","dist":{"integrity":"sha512-R+tRCDAM1fQe4kZIQV7HZKAxwF5FDADVOARrHbmU27YFgg4j2aR0/zl1eBb4NtSwSkGYt7UT6R19LPAx2JZL+A==","shasum":"50fe5fd25d22ea130a4baa37bce7342f9451af14","tarball":"https://registry.npmjs.org/@apirelio/express/-/express-0.2.0.tgz","fileCount":8,"unpackedSize":12643,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDEuaBLqu3zhg3D1XHWx52ob6oF6neRzrkxQIdXZ/pwwAiBkOT4ypgRPy/HF69o44dnGHfH84/iJM19jkVXYGIaujA=="}]},"_npmUser":{"name":"pryznar","email":"pryznar@gmail.com"},"directories":{},"maintainers":[{"name":"pryznar","email":"pryznar@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/express_0.2.0_1785512553865_0.1921636750538731"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-31T14:30:01.194Z","modified":"2026-07-31T15:42:34.195Z","0.1.0":"2026-07-31T14:30:01.718Z","0.2.0":"2026-07-31T15:42:34.008Z"},"bugs":{"url":"https://github.com/pryznar/apirelio-express/issues"},"license":"MIT","homepage":"https://apirelio.com/docs","keywords":["apirelio","express","api","analytics","observability"],"repository":{"type":"git","url":"git+https://github.com/pryznar/apirelio-express.git"},"description":"Fail-safe customer-aware API analytics middleware for Express.","maintainers":[{"name":"pryznar","email":"pryznar@gmail.com"}],"readme":"# Apirelio Express SDK\n\nCustomer-aware, privacy-safe API analytics for Express 4 and 5. The middleware records normalized\nroute templates and enqueues events without awaiting Apirelio from the customer request.\n\n```bash\nnpm install @apirelio/express\n```\n\n```ts\nimport express from 'express'\nimport { apirelio } from '@apirelio/express'\n\nconst app = express()\nconst analytics = apirelio({\n  apiKey: process.env.APIRELIO_API_KEY ?? '',\n  endpoint: process.env.APIRELIO_ENDPOINT ?? 'https://apirelio.com',\n  service: 'billing-api',\n  environment: 'production',\n  release: process.env.APP_RELEASE,\n  includeRoutes: ['/api/**'],\n  excludeRoutes: ['/api/health', '/api/internal/**'],\n  resolveCustomer: req => req.user ? {\n    id: String(req.user.companyId),\n    name: req.user.companyName,\n    plan: req.user.companyPlan,\n  } : null,\n})\n\napp.use(analytics)\n```\n\nRegister the middleware after authentication and before observed routes. Call\n`await analytics.shutdown()` from the application's graceful shutdown path. Batches are held in a\nbounded in-memory queue; failures and overload never change the Express response.\n\nBodies, query strings, cookies, authorization values, email addresses and IP addresses are not\ncaptured. Custom metadata must be explicitly allow-listed with `metadataKeys`.\n\nRoute patterns are exact paths or prefixes ending in `/**`. If `includeRoutes` is omitted, all\nincoming Express routes are eligible; `excludeRoutes` always takes precedence.\n","readmeFilename":"README.md"}