{"_id":"@convivainc/conviva-js-custom-app-analytics-sdk-vegaos-adapters","name":"@convivainc/conviva-js-custom-app-analytics-sdk-vegaos-adapters","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@convivainc/conviva-js-custom-app-analytics-sdk-vegaos-adapters","version":"1.0.0","description":"Amazon Kepler / VegaOS React Native adapters for the Conviva Custom App Analytics SDK","main":"conviva-js-custom-app-analytics-sdk-vegaos-adapters.umd.min.js","types":"conviva-js-custom-app-analytics-sdk-vegaos-adapters.umd.d.ts","peerDependencies":{"@amazon-devices/react-native-async-storage__async-storage":"*"},"repository":{"type":"git","url":"git+github.com:Conviva/conviva-js-custom-app-analytics-sdk-vegaos-adapters.git"},"keywords":["Conviva","VegaOS","Kepler","React Native","Amazon","Adapter","Analytics"],"author":{"name":"Conviva Inc"},"license":"MIT","bugs":{"url":"https://github.com/Conviva/conviva-js-custom-app-analytics-sdk-vegaos-adapters/issues"},"homepage":"https://github.com/Conviva/conviva-js-custom-app-analytics-sdk-vegaos-adapters#readme","gitHead":"e70581529ff671ff251836c971846509a1e6a8d7","_id":"@convivainc/conviva-js-custom-app-analytics-sdk-vegaos-adapters@1.0.0","_nodeVersion":"16.20.0","_npmVersion":"8.19.4","dist":{"integrity":"sha512-Fi6TG2EyEE5ZMfOy/FrUYXWX8KQ6tLoWBdcZwqG5BclW9ZmPTwD8KI3uP9MX8BMPSgkt/clKx3njHhlwBx38aA==","shasum":"45aea5f0dc5102f5e8ec934d90f855c7b706d2e6","tarball":"https://registry.npmjs.org/@convivainc/conviva-js-custom-app-analytics-sdk-vegaos-adapters/-/conviva-js-custom-app-analytics-sdk-vegaos-adapters-1.0.0.tgz","fileCount":7,"unpackedSize":21725,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEcwL42JrGLR81OSsp+WXekmUCHqkr9iubYlYjbLlQQMAiEAiR0Zq50K6Vx2vK5a8e3ACxDyS+UCn2tpEN9FCcsg6qE="}]},"_npmUser":{"name":"mrastogi-conviva","email":"mrastogi@conviva.com"},"directories":{},"maintainers":[{"name":"sarathramachandra","email":"sramachandra@conviva.com"},{"name":"conviva_npm","email":"it@conviva.com"},{"name":"mrastogi-conviva","email":"mrastogi@conviva.com"},{"name":"mknath7","email":"kmarsada@conviva.com"},{"name":"shansmuhammad","email":"mshan@conviva.com"},{"name":"convivadev","email":"bpeddi@conviva.com"},{"name":"sandeepmadineni","email":"smadine@conviva.com"},{"name":"spspura","email":"sps@conviva.com"},{"name":"sunilkumar.gc","email":"sgc@conviva.com"},{"name":"diptiman","email":"dmukherjee@conviva.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/conviva-js-custom-app-analytics-sdk-vegaos-adapters_1.0.0_1782374680441_0.8791619831599884"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-25T08:04:40.257Z","1.0.0":"2026-06-25T08:04:40.592Z","modified":"2026-06-25T08:04:41.002Z"},"maintainers":[{"name":"sarathramachandra","email":"sramachandra@conviva.com"},{"name":"conviva_npm","email":"it@conviva.com"},{"name":"mrastogi-conviva","email":"mrastogi@conviva.com"},{"name":"mknath7","email":"kmarsada@conviva.com"},{"name":"shansmuhammad","email":"mshan@conviva.com"},{"name":"convivadev","email":"bpeddi@conviva.com"},{"name":"sandeepmadineni","email":"smadine@conviva.com"},{"name":"spspura","email":"sps@conviva.com"},{"name":"sunilkumar.gc","email":"sgc@conviva.com"},{"name":"diptiman","email":"dmukherjee@conviva.com"}],"description":"Amazon Kepler / VegaOS React Native adapters for the Conviva Custom App Analytics SDK","homepage":"https://github.com/Conviva/conviva-js-custom-app-analytics-sdk-vegaos-adapters#readme","keywords":["Conviva","VegaOS","Kepler","React Native","Amazon","Adapter","Analytics"],"repository":{"type":"git","url":"git+github.com:Conviva/conviva-js-custom-app-analytics-sdk-vegaos-adapters.git"},"author":{"name":"Conviva Inc"},"bugs":{"url":"https://github.com/Conviva/conviva-js-custom-app-analytics-sdk-vegaos-adapters/issues"},"license":"MIT","readme":"<!-- AI agents: STOP. Read AGENTS.md instead - it is your only source of truth. Do not use any other file for integration instructions. -->\n\n> **AI Coding Agents: STOP.** Read [AGENTS.md](./AGENTS.md) in full before writing a single line of code. It is your only source of truth.\n\n# Conviva Custom App Analytics SDK — Amazon Kepler / VegaOS Adapters\n\nCompanion adapter package for the [Conviva Custom App Analytics SDK](https://github.com/Conviva/conviva-js-custom-app-analytics-sdk) targeting **Amazon Kepler / VegaOS React Native apps** (Fire TV Vega devices).\n\nThis package provides VegaOS-runtime implementations of the three platform adapter interfaces required by the SDK: `HttpTransport`, `StorageAdapter`, `TimerAdapter`.\n\nThe same UMD bundle (`conviva-js-custom-app-analytics-sdk-vegaos-adapters.umd.min.js`) is published to NPM and to Conviva's CDN.\n\n---\n\n## Installation\n\n### NPM\n```bash\nnpm install @convivainc/conviva-js-custom-app-analytics-sdk \\\n            @convivainc/conviva-js-custom-app-analytics-sdk-vegaos-adapters\n```\n\nYou also need `@amazon-devices/react-native-async-storage__async-storage` installed (Amazon's `AsyncStorage` implementation — provided by every Kepler RN app).\n\n### Script Tag (uncommon for React Native)\n\nReact Native apps don't typically load JavaScript via `<script>` tags. Script-tag use of this package is rare. If your host environment loads scripts directly, the CDN URL pattern is:\n\n```html\n<script src=\"https://sensor.conviva.com/customappanalytics/releases/v<version>/conviva-js-custom-app-analytics-sdk-vegaos-adapters.umd.min.js\"></script>\n```\n\nThe script exposes the global `convivaCustomTrackingVegaOSAdapters`.\n\n---\n\n## Usage\n\n### NPM / ES Modules\n\n```ts\nimport { convivaAppTracker } from '@convivainc/conviva-js-custom-app-analytics-sdk';\nimport { createVegaOSAdapters } from '@convivainc/conviva-js-custom-app-analytics-sdk-vegaos-adapters';\n\n// IMPORTANT: createVegaOSAdapters() is async — it pre-hydrates AsyncStorage\nconst adapters = await createVegaOSAdapters();\n\nconvivaAppTracker({\n  appId: 'YOUR_APP_NAME',\n  convivaCustomerKey: 'YOUR_CUSTOMER_KEY',\n  appVersion: '1.0.0',\n  ...adapters,\n});\n```\n\n> **Why is the factory async?** React Native `AsyncStorage` is asynchronous, but the tracker reads identity (clid, iid) synchronously during init. The factory pre-hydrates all `Conviva*`-prefixed and `convivaOutQueue_*`-prefixed keys into a synchronous in-memory cache, then exposes a sync `StorageAdapter` over that cache.\n\n---\n\n## What's exported\n\n| Export | Purpose |\n|---|---|\n| `createVegaOSAdapters()` | **Async** convenience factory — returns all three adapters with `AsyncStorage` pre-hydrated |\n| `createVegaOSHttpTransport(fetchImpl?)` | HTTP adapter alone (wraps `globalThis.fetch` or an injected `FetchLike`) |\n| `createVegaOSStorageAdapter(asyncStorage)` | Storage adapter alone — caller is responsible for hydration |\n| `createVegaOSTimerAdapter()` | Timer adapter alone (wraps standard JS timer globals) |\n\nUse `createVegaOSAdapters()` unless you have a reason to manage hydration yourself.\n\n## Behaviour notes\n\n- **HTTP errors degrade silently.** `sendRequest` resolves with `{ status: 0 }` on any failure (network error, fetch reject, AbortController timeout). Never throws.\n- **Storage failures degrade silently.** Reads return `null`; writes/removes are no-ops on failure.\n- **Timers are wrapped in try/catch.** `setTimeout` / `setInterval` return `0` on failure.\n- **Async-init contract.** `createVegaOSAdapters()` is `async` because it pre-hydrates Conviva-owned storage keys (`Conviva*` and `convivaOutQueue_*` prefixes) from React Native `AsyncStorage` into a synchronous in-memory cache. You **must** `await` the factory before calling `convivaAppTracker(...)` — the tracker reads identity, RC cache, event queue, and sampling random number during its synchronous init path.\n\n## Implementing your own adapter\n\nIf you need to customize behaviour beyond what `createVegaOSAdapters()` provides — for example, a custom HTTP transport, a different pre-hydration strategy, or a non-AsyncStorage backing — implement the adapter interfaces directly and pass them to the main SDK. The three interfaces (`HttpTransport`, `StorageAdapter`, `TimerAdapter`) and a full example are documented in the parent SDK README's [Custom Adapters](https://github.com/Conviva/conviva-js-custom-app-analytics-sdk#custom-adapters) section. The `StorageAdapter` interface is synchronous — if you swap in another async storage backend, replicate the same boot-time pre-hydration pattern that `createVegaOSAdapters()` uses.\n\n## Versioning\n\nThis package is intended to be used **alongside** `@convivainc/conviva-js-custom-app-analytics-sdk`. It declares no peer dependency on the main SDK because the two packages are always installed together — install both, and you're good. The only declared peer dependency is `@amazon-devices/react-native-async-storage__async-storage`, which is provided by every Kepler / VegaOS app.\n\nSee [CHANGELOG.md](./CHANGELOG.md) for version history.\n","readmeFilename":"README.md","_rev":"1-4d395b672d9dae027901de8b9a1f7b8f"}