{"_id":"@assetize/kanban-observability","_rev":"4-29c23d44978538a63523a501215100d6","name":"@assetize/kanban-observability","dist-tags":{"latest":"1.3.0"},"versions":{"1.0.0":{"name":"@assetize/kanban-observability","version":"1.0.0","_id":"@assetize/kanban-observability@1.0.0","maintainers":[{"name":"ayazatassetize","email":"ayaz@assetize.today"}],"dist":{"shasum":"beb3e840c2ac78b03e6ca5ea9337ecb282de879b","tarball":"https://registry.npmjs.org/@assetize/kanban-observability/-/kanban-observability-1.0.0.tgz","fileCount":6,"integrity":"sha512-VhBKRgNmlk3PNU4K2izE/ZjtkIBdGPEPiRd5gegnxExvA2V+cnu2xRHiCdlOp13eDIm26vrcDWVgZeHqnyvafA==","signatures":[{"sig":"MEQCIEGfoXnPQm4ZfZbu2Iz2fr5eh8LzBMNsUzQldbOk6pcKAiA23xOpdoxve9EJ3kypeC/NiGVmfURRHrbIEfffQUqDtg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10703},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"369bceadae4d05308f22f132f0934eba07ff852e","scripts":{"build":"tsc -p tsconfig.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"ayazatassetize","email":"ayaz@assetize.today"},"_npmVersion":"11.6.2","description":"Lightweight frontend error logging SDK for Assetize observability ingest.","directories":{},"_nodeVersion":"25.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/kanban-observability_1.0.0_1770717860000_0.10404780404370739","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@assetize/kanban-observability","version":"1.1.0","_id":"@assetize/kanban-observability@1.1.0","maintainers":[{"name":"ayazatassetize","email":"ayaz@assetize.today"}],"dist":{"shasum":"f7472d9ecda8f06a4ee239179769573cd31d37a0","tarball":"https://registry.npmjs.org/@assetize/kanban-observability/-/kanban-observability-1.1.0.tgz","fileCount":6,"integrity":"sha512-cUlsI4zM/PCIuSSbSy6ve0gdZ4gXc86pf54MgOYEYtAFEjqeCeZMOteuOHHPD4vlSS0pX19HVQ1CuQYFaPdrSw==","signatures":[{"sig":"MEUCICStZ2uzYPKfxcQDphBl4d8feDH1hr6xPQ0RgnroowbFAiEA23rOE/DENdEPgi4S7yn4fKbHNMZv6UdNGYJ8yfvv9Ps=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28632},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"06a858d5db1b0d328bbe54cff3942d2f1f17b8ff","scripts":{"build":"tsc -p tsconfig.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"ayazatassetize","email":"ayaz@assetize.today"},"_npmVersion":"11.6.2","description":"Lightweight frontend error logging SDK for Assetize observability ingest.","directories":{},"_nodeVersion":"25.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/kanban-observability_1.1.0_1771353815876_0.5521565529832493","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@assetize/kanban-observability","version":"1.2.0","_id":"@assetize/kanban-observability@1.2.0","maintainers":[{"name":"ayazatassetize","email":"ayaz@assetize.today"}],"dist":{"shasum":"51e51d6233efaa50166ab570c304195ff3649603","tarball":"https://registry.npmjs.org/@assetize/kanban-observability/-/kanban-observability-1.2.0.tgz","fileCount":9,"integrity":"sha512-L97w9E56vcOmkbCRrDk9a7aWxnhygICk4wgRsOJb02TqSGMdH52GD9q+GQtN+IK54aMHpZgK2x38NVfKMRiq9w==","signatures":[{"sig":"MEUCIQDv/gbHBZjY3OTv/lhhi7jM8BII5vv0WJExAPRDKXugpQIgTUCZP5g4OyM8gQ8/y+tzNPw+2KaNkRBPB/mbO74TslQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57110},"main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js","require":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","default":"./dist/node.js","require":"./dist/node.js"}},"gitHead":"06a858d5db1b0d328bbe54cff3942d2f1f17b8ff","scripts":{"build":"tsc -p tsconfig.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"ayazatassetize","email":"ayaz@assetize.today"},"_npmVersion":"11.6.2","description":"Assetize observability SDK for frontend and backend log ingestion.","directories":{},"_nodeVersion":"25.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/kanban-observability_1.2.0_1771359525831_0.20651731676242702","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@assetize/kanban-observability","version":"1.3.0","description":"Assetize observability SDK for frontend and backend log ingestion.","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js","default":"./dist/index.js"},"./node":{"types":"./dist/node.d.ts","require":"./dist/node.js","default":"./dist/node.js"}},"scripts":{"build":"tsc -p tsconfig.json","prepublishOnly":"npm run build"},"publishConfig":{"access":"public"},"devDependencies":{"typescript":"^5.9.3"},"gitHead":"06a858d5db1b0d328bbe54cff3942d2f1f17b8ff","_id":"@assetize/kanban-observability@1.3.0","_nodeVersion":"25.0.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-1BFSMA4Lu8Tv5OFsPlbz1pyWqspQtNyjJjxwjV3UtQd58BgZOcT/1HsxzJ6pDt+Si+vGbp3NgDOjtSe2PYF5kg==","shasum":"723a27fc5130a5310cee5a576312f25c531e2e5b","tarball":"https://registry.npmjs.org/@assetize/kanban-observability/-/kanban-observability-1.3.0.tgz","fileCount":9,"unpackedSize":59308,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDPJyPTquE6Akwx+Maga4ba1e1gzV9DgqBWQK8rTaLi9gIhAJFzqOeg1qLJSFLrshAZmALkdZebgD9czDPRmbOU429S"}]},"_npmUser":{"name":"ayazatassetize","email":"ayaz@assetize.today"},"directories":{},"maintainers":[{"name":"ayazatassetize","email":"ayaz@assetize.today"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/kanban-observability_1.3.0_1771361203746_0.6876130594801506"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-10T10:04:19.921Z","modified":"2026-02-17T20:46:44.323Z","1.0.0":"2026-02-10T10:04:20.251Z","1.1.0":"2026-02-17T18:43:36.036Z","1.2.0":"2026-02-17T20:18:45.985Z","1.3.0":"2026-02-17T20:46:43.885Z"},"description":"Assetize observability SDK for frontend and backend log ingestion.","maintainers":[{"name":"ayazatassetize","email":"ayaz@assetize.today"}],"readme":"# @assetize/kanban-observability\n\nFrontend SDK to send browser/runtime errors to Assetize observability ingest.\n\n## Install\n\n```bash\nnpm i @assetize/kanban-observability\n```\n\n## Usage\n\n```ts\nimport { installKanbanObservability } from \"@assetize/kanban-observability\";\n\nconst client = installKanbanObservability({\n  endpoint:\n    \"https://be.kanban.develop.assetize.today/observability/ingest/frontend\",\n  apiKey: \"<YOUR_INGEST_KEY>\",\n  environment: import.meta.env.MODE || \"production\",\n  release: import.meta.env.VITE_APP_VERSION || \"unknown\",\n  appVersion: import.meta.env.VITE_APP_VERSION || \"unknown\",\n  captureFrontendErrors: true,\n  captureFrontendConsole: true,\n  captureBackendApiCalls: true,\n  captureBackendApiErrors: true,\n  frontendErrorSampleRate: 1,\n  frontendConsoleSampleRate: 1,\n  apiTargets: [\"https://be.kanban.develop.assetize.today\"],\n});\n\n// Optional manual capture\nclient.captureException(new Error(\"Manual check\"));\n```\n\n## Backend (Node/Express)\n\n```ts\nimport express from \"express\";\nimport { installKanbanObservabilityNode } from \"@assetize/kanban-observability/node\";\n\nconst app = express();\napp.use(express.json());\n\nconst observability = installKanbanObservabilityNode({\n  // You can pass either API base URL or full ingest frontend URL.\n  endpoint: \"https://be.kanban.develop.assetize.today\",\n  apiKey: process.env.OBSERVABILITY_INGEST_KEY!,\n  environment: process.env.NODE_ENV || \"production\",\n  captureBackendApiCalls: true,\n  captureBackendApiErrors: true,\n});\n\n// Request logging middleware\napp.use(observability.requestMiddleware());\n\napp.get(\"/health\", (_req, res) => {\n  res.json({ ok: true });\n});\n\n// Error logging middleware (register after routes)\napp.use(observability.errorMiddleware());\n```\n\nNote: 4xx/5xx HTTP responses are recorded in Backend API errors automatically,\neven when the route returns an error response without throwing an exception.\n\nThe node client sends to:\n- `POST /observability/ingest/backend-api-call`\n- `POST /observability/ingest/backend-api-error`\n\nManual usage (for interceptor/filter integrations):\n\n```ts\nawait observability.captureApiCall({ method: \"POST\", path: \"/jobs/run\", statusCode: 200, durationMs: 34 });\nawait observability.captureApiError({ method: \"POST\", path: \"/jobs/run\", statusCode: 500, errorType: \"Error\", message: \"failed\" });\n```\n\n## Build\n\n```bash\nnpm run build\n```\n\n`prepublishOnly` runs the build automatically before publish.\n","readmeFilename":"README.md"}