{"_id":"@9apes/rum-sdk","_rev":"5-fffe09ee8069b2c76c2850c103884725","name":"@9apes/rum-sdk","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@9apes/rum-sdk","version":"0.1.0","_id":"@9apes/rum-sdk@0.1.0","maintainers":[{"name":"a4averma","email":"hello@adityaverma.com"},{"name":"9apes-publisher","email":"pr.bot@nineapes.com"},{"name":"ravishanker404","email":"ravishanker414@gmail.com"}],"dist":{"shasum":"636789528efdf804dc1b373e800afcafd8e56467","tarball":"https://registry.npmjs.org/@9apes/rum-sdk/-/rum-sdk-0.1.0.tgz","fileCount":5,"integrity":"sha512-6sK6WJGFDLPrs/V/OXI157gcEO0ngAQNDLfAkQyAO6YJCZRgJLd1R5Zcwoj1Bz/BfJbA/M3MZWQ0oW9CMkv7aQ==","signatures":[{"sig":"MEUCIFq69yFQCLKW1lk6wh4Z8uBTlgtiTAgBrBX+sWueS5HmAiEApadMkyfVa8+YMgDrXzh1/BoXGXeM4JHi0Lt2mEYxN/4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":461421},"main":"./dist/index.js","type":"module","_from":"file:9apes-rum-sdk-0.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","build":"tsup","check-types":"tsc --noEmit"},"_npmUser":{"name":"9apes-publisher","email":"pr.bot@nineapes.com"},"_resolved":"/private/var/folders/rr/7lns2rqj4174t781fftrv60r0000gn/T/4335bd31e2fa0209f818d10fc437d644/9apes-rum-sdk-0.1.0.tgz","_integrity":"sha512-6sK6WJGFDLPrs/V/OXI157gcEO0ngAQNDLfAkQyAO6YJCZRgJLd1R5Zcwoj1Bz/BfJbA/M3MZWQ0oW9CMkv7aQ==","_npmVersion":"11.6.1","description":"Modern, modular analytics and error tracking library with ClickHouse-optimized event schema.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"rrweb":"2.0.0-alpha.4","web-vitals":"5.1.0","@rrweb/types":"2.0.0-alpha.18","@rrweb/record":"2.0.0-alpha.18"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","eslint":"^9.34.0","typescript":"5.9.2","@types/node":"^22.15.3","@repo/eslint-config":"0.0.0","@repo/typescript-config":"0.0.0"},"peerDependencies":{"vue":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rum-sdk_0.1.0_1767435758854_0.4154601608538684","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@9apes/rum-sdk","version":"0.1.1","_id":"@9apes/rum-sdk@0.1.1","maintainers":[{"name":"9apes-publisher","email":"pr.bot@nineapes.com"}],"dist":{"shasum":"5e55af9698581e455d1a6c31967efaf0f698517c","tarball":"https://registry.npmjs.org/@9apes/rum-sdk/-/rum-sdk-0.1.1.tgz","fileCount":5,"integrity":"sha512-tvLjSgAOjPT/w8JY4kSjxj1vcIpPQPeF6oCEJWdHflVgTpJ/CVKrFAFPHPyTtt2kIURUiaZ4PUeJyXm6HsLgnQ==","signatures":[{"sig":"MEQCIG9jehkmii777+27LDvNSycHbQDfUeUhnYehrgfZn3YlAiA1rUHdwmYe6zh2gQkccS3Ntotg/0svG4fnRPyfcKjWTw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":460826},"main":"./dist/index.js","type":"module","_from":"file:9apes-rum-sdk-0.1.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"dev":"tsup --watch","lint":"eslint . --max-warnings 0","build":"tsup","check-types":"tsc --noEmit"},"_npmUser":{"name":"9apes-publisher","email":"pr.bot@nineapes.com"},"_resolved":"/private/var/folders/rr/7lns2rqj4174t781fftrv60r0000gn/T/148f35f23fe6b2b42c2f9f5ad9951523/9apes-rum-sdk-0.1.1.tgz","_integrity":"sha512-tvLjSgAOjPT/w8JY4kSjxj1vcIpPQPeF6oCEJWdHflVgTpJ/CVKrFAFPHPyTtt2kIURUiaZ4PUeJyXm6HsLgnQ==","_npmVersion":"11.6.1","description":"9apes Real User Monitoring SDK helps you track the real time performance, errors, and analytics of your application's users.","directories":{},"_nodeVersion":"24.11.0","dependencies":{"rrweb":"2.0.0-alpha.4","web-vitals":"5.1.0","@rrweb/types":"2.0.0-alpha.18","@rrweb/record":"2.0.0-alpha.18"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.5","eslint":"^9.34.0","typescript":"5.9.2","@types/node":"^22.15.3","@repo/eslint-config":"0.0.0","@repo/typescript-config":"0.0.0"},"peerDependencies":{"vue":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/rum-sdk_0.1.1_1767436351963_0.6412817239657458","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@9apes/rum-sdk","version":"0.1.2","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","type":"module","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"devDependencies":{"@types/node":"^22.15.3","eslint":"^9.34.0","tsup":"^8.3.5","typescript":"5.9.2","@repo/eslint-config":"0.0.0","@repo/typescript-config":"0.0.0"},"dependencies":{"@rrweb/record":"2.0.0-alpha.18","@rrweb/rrweb-plugin-console-record":"2.0.0-alpha.18","@rrweb/types":"2.0.0-alpha.18","rrweb":"2.0.0-alpha.4","web-vitals":"5.1.0"},"peerDependencies":{"vue":"^3.0.0"},"scripts":{"dev":"tsup --watch","build":"tsup","check-types":"tsc --noEmit","lint":"eslint . --max-warnings 0"},"_id":"@9apes/rum-sdk@0.1.2","description":"**Real User Monitoring by [9Apes](https://9apes.com)**","_integrity":"sha512-3p9Xngjz+ORStbQQ5ZxLcvWcIqZXIzyeHeTIhMs4Ne2dqY6nq34DTCRccF7MLCmjYgNa7X2xf7hW4aR9MZlcqA==","_resolved":"/private/var/folders/rr/7lns2rqj4174t781fftrv60r0000gn/T/779a5abee858549ed989325f57a4ced9/9apes-rum-sdk-0.1.2.tgz","_from":"file:9apes-rum-sdk-0.1.2.tgz","_nodeVersion":"24.11.0","_npmVersion":"11.6.1","dist":{"integrity":"sha512-3p9Xngjz+ORStbQQ5ZxLcvWcIqZXIzyeHeTIhMs4Ne2dqY6nq34DTCRccF7MLCmjYgNa7X2xf7hW4aR9MZlcqA==","shasum":"3d63f228b0ffe55f0a4362c1f9fa2dbb10476c57","tarball":"https://registry.npmjs.org/@9apes/rum-sdk/-/rum-sdk-0.1.2.tgz","fileCount":6,"unpackedSize":552058,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGzAtlhvoBIqk+UrEutioVPOBrzITOTudcO5CaB5YJTPAiEAh8IHRdx02nxqhUKezakNsh60LxVMVQhSL+GzHwbYFak="}]},"_npmUser":{"name":"9apes-publisher","email":"pr.bot@nineapes.com"},"directories":{},"maintainers":[{"name":"9apes-publisher","email":"pr.bot@nineapes.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/rum-sdk_0.1.2_1770740778877_0.009008087362183614"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-03T10:22:38.749Z","modified":"2026-02-10T16:26:19.239Z","0.1.0":"2026-01-03T10:22:39.026Z","0.1.1":"2026-01-03T10:32:32.272Z","0.1.2":"2026-02-10T16:26:19.100Z"},"description":"**Real User Monitoring by [9Apes](https://9apes.com)**","maintainers":[{"name":"9apes-publisher","email":"pr.bot@nineapes.com"}],"readme":"# @9apes/rum-sdk\n\n**Real User Monitoring by [9Apes](https://9apes.com)**\n\n> Production-grade RUM SDK for tracking performance, errors, user behavior, and session replay — all in one lightweight package.\n\n---\n\n## Overview\n\n`@9apes/rum-sdk` is part of the 9Apes observability platform. It captures real user data from your web applications and streams it to your 9Apes dashboard, giving you full visibility into how your product performs in the wild.\n\n**A valid 9Apes API key is required.** Get yours at [9apes.com](https://9apes.com).\n\n### What it tracks\n\n- **Core Web Vitals** — CLS, INP, FCP, LCP, TTFB\n- **Errors** — JS exceptions, resource errors, unhandled promise rejections with full stack traces and severity classification\n- **Performance** — Navigation timing, resource timing, memory usage\n- **User behavior** — Clicks, scrolls, form interactions, rage click detection, automatic action tracking\n- **Network** — Fetch/XHR request monitoring\n- **Session replay** — rrweb-based full session recording with privacy controls and console capture\n- **CPU monitoring** — Frame-based CPU usage estimation with dropped frame detection\n- **Long Animation Frames** — Script-level attribution for UI jank (Chrome 123+)\n\n---\n\n## Installation\n\n```bash\npnpm add @9apes/rum-sdk\n```\n\n---\n\n## Quick Start\n\n```typescript\nimport { initWatchdog } from '@9apes/rum-sdk';\n\ninitWatchdog({\n  apiKey: 'YOUR_API_KEY',\n  env: 'production',     // optional — filter by environment in the dashboard\n  userId: 'user-123',    // optional\n});\n```\n\nThat's it. With just an API key, the SDK automatically begins collecting Web Vitals, errors, performance data, and user behavior. All data is batched and sent to your 9Apes dashboard.\n\n---\n\n## Configuration\n\n### Required\n\n| Field    | Type     | Description                                             |\n| -------- | -------- | ------------------------------------------------------- |\n| `apiKey` | `string` | Your 9Apes API key. Obtain from the 9Apes dashboard. |\n\n### Optional\n\n```typescript\ninitWatchdog({\n  apiKey: 'YOUR_API_KEY',\n\n  // Identity & environment\n  userId: 'user-123',\n  env: 'production',        // Sent with every event — filter by environment in the dashboard\n\n  // Sampling (cost control)\n  sampleRate: 100,                    // % of sessions to track (0-100, default: 100)\n  sessionRecordingSampleRate: 50,     // % of tracked sessions with session replay (0-100, default: 100)\n\n  // Feature toggles\n  enableWebVitals: true,\n  enableErrorTracking: true,\n  enablePerformanceTracking: true,\n  enableBehaviorTracking: true,\n  enableBusinessMetrics: true,\n  enableSessionRecording: false,\n\n  // Privacy\n  enablePrivacyMode: false,\n  sensitiveSelectors: ['.credit-card', '#ssn'],\n  maskAllInputs: true,\n\n  // Console recording (when session recording is on)\n  enableConsoleRecording: true,\n  consoleRecordingLevels: ['log', 'warn', 'error', 'info', 'debug'],\n\n  // Error behavior\n  sendCriticalErrorsImmediately: true,\n\n  // Action tracking\n  enableActionTracking: true,\n  actionAttributeName: 'data-watchdog-action',\n  excludeActionSelectors: ['.ignore-tracking'],\n\n  // Debugging\n  debug: false,\n});\n```\n\n---\n\n## API Reference\n\n### Core\n\n#### `initWatchdog(config: WatchdogConfig): void`\n\nInitialize the SDK. Must be called before any other function.\n\n#### `destroyWatchdog(): void`\n\nTear down the SDK, flush remaining events, and release all resources.\n\n---\n\n### Tracking\n\n#### `trackFeatureUsage(featureName: string, context?: object): void`\n\nTrack product feature adoption.\n\n```typescript\ntrackFeatureUsage('export-pdf', { format: 'a4', pages: 10 });\n```\n\n#### `trackConversion(event: string, value?: number, metadata?: object): void`\n\nTrack conversion and revenue events.\n\n```typescript\ntrackConversion('purchase', 99.99, { productId: '123', quantity: 2 });\n```\n\n#### `trackError(error: Error | string, context?: object): void`\n\nManually report an error (useful for framework-level error boundaries).\n\n```typescript\ntrackError(error, { component: 'Checkout', info: 'Payment failed' });\n```\n\n#### `addCustomBreadcrumb(message: string, data?: object): void`\n\nAdd a breadcrumb for richer error context.\n\n```typescript\naddCustomBreadcrumb('User clicked checkout', { cartItems: 3, total: 149.99 });\n```\n\n---\n\n### Session Control\n\n#### `pauseRecording(): void`\n\nPause session recording — use on sensitive screens (e.g. payment forms).\n\n#### `resumeRecording(): void`\n\nResume session recording.\n\n#### `updateUserId(userId: string): void`\n\nUpdate the user ID after login or authentication.\n\n---\n\n### Utilities\n\n#### `forceFlush(): void`\n\nImmediately flush all buffered events to the 9Apes backend.\n\n#### `getAnalyticsStatus(): object | null`\n\nReturns current SDK status.\n\n```typescript\nconst status = getAnalyticsStatus();\n// {\n//   isRecording: true,\n//   sessionId: '...',\n//   bufferSize: 5,\n//   collectors: ['WebVitalsCollector', 'ErrorCollector', ...]\n// }\n```\n\n---\n\n## Middleware System\n\nExtend the event pipeline with custom middleware. Three hooks are available:\n\n| Hook             | Purpose                                      |\n| ---------------- | -------------------------------------------- |\n| `onPreCollect`   | Filter or modify events before collection    |\n| `onPostCollect`  | Enrich events after collection               |\n| `onPreSend`      | Transform the full batch before transmission |\n\n```typescript\nimport { registerMiddleware } from '@9apes/rum-sdk';\n\nregisterMiddleware({\n  name: 'build-tagger',\n\n  onPostCollect(event) {\n    return { ...event, buildVersion: '2.1.0' };\n  },\n\n  onPreSend(batch) {\n    return { ...batch, metadata: { release: 'v2.1.0' } };\n  },\n});\n```\n\n### Built-in Middleware\n\nThe SDK ships with enrichers that run automatically:\n\n- **BreadcrumbEnricher** — attaches breadcrumb trail to error events\n- **SessionEnricher** — adds session-level metrics\n- **ViewportEnricher** — adds device category and viewport dimensions\n- **ConnectionEnricher** — adds network quality classification\n\n---\n\n## Framework Integrations\n\n### React\n\n```typescript\nimport { useEffect } from 'react';\nimport { initWatchdog, updateUserId } from '@9apes/rum-sdk';\n\nfunction App() {\n  useEffect(() => {\n    initWatchdog({ apiKey: process.env.REACT_APP_9APES_KEY! });\n  }, []);\n\n  const handleLogin = (user) => {\n    updateUserId(user.id);\n  };\n\n  return <YourApp />;\n}\n```\n\n### Next.js\n\n```typescript\n// app/providers.tsx  (or pages/_app.tsx)\nimport { useEffect } from 'react';\nimport { initWatchdog } from '@9apes/rum-sdk';\n\nexport function Providers({ children }) {\n  useEffect(() => {\n    initWatchdog({ apiKey: process.env.NEXT_PUBLIC_9APES_KEY! });\n  }, []);\n\n  return <>{children}</>;\n}\n```\n\n### Vue\n\n```typescript\nimport { createApp } from 'vue';\nimport { WatchdogVuePlugin } from '@9apes/rum-sdk';\nimport App from './App.vue';\n\nconst app = createApp(App);\n\napp.use(WatchdogVuePlugin, {\n  apiKey: import.meta.env.VITE_9APES_KEY,\n});\n\napp.mount('#app');\n```\n\n\n## License\n\nThis software is proprietary and provided under a commercial license by **9Apes Technologies**.\nUnauthorized copying, modification, distribution, or use of this software outside the terms\nof your subscription agreement is strictly prohibited.\n\nRefer to your service agreement or contact [support@9apes.com](mailto:support@9apes.com) for licensing details.\n\n---\n\n## Support\n\n| Channel                  | Details                                              |\n| ------------------------ | ---------------------------------------------------- |\n| Documentation            | [docs.9apes.com](https://docs.9apes.com)             |\n| Email                    | [support@9apes.com](mailto:support@9apes.com)        |\n| Dashboard                | [app.9apes.com](https://app.9apes.com)               |\n\nFor enterprise support plans and SLAs, contact your account manager.\n","readmeFilename":"README.md"}