{"_id":"@addidotlol/kanade-svelte","_rev":"3-337fb5e145428bc207661e9d9f27aa6a","name":"@addidotlol/kanade-svelte","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@addidotlol/kanade-svelte","version":"0.1.0","_id":"@addidotlol/kanade-svelte@0.1.0","maintainers":[{"name":"embedvr","email":"npm@helium.email"}],"dist":{"shasum":"31ebdb4f489f44b4dac2e0aadfc888d7786c9a49","tarball":"https://registry.npmjs.org/@addidotlol/kanade-svelte/-/kanade-svelte-0.1.0.tgz","fileCount":5,"integrity":"sha512-f+zWBJ4on2bkvpUp4gks7pAAS0CQWeKoCAWAD+1ZC2GWvDeRKfYLXsgKYD4Eu4E5vR4A8qXYyeShbyz5SmpxHw==","signatures":[{"sig":"MEUCIDpbH0VOcq+mta9/yON++ktTO5bpjq4Ic/XkDtrBrjqLAiEAqns9qTsUKPLexGucFDf9AoOSbHK8SPoBRPyBcvmehLE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3576},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"d90f1b9d8184008c166a5be9924585c7da0d2d41","scripts":{"dev":"svelte-package -i src --watch","build":"svelte-package -i src"},"_npmUser":{"name":"embedvr","email":"npm@helium.email"},"_npmVersion":"11.9.0","description":"Svelte 5 client for Kanade now-playing API","directories":{},"_nodeVersion":"25.6.1","_hasShrinkwrap":false,"devDependencies":{"svelte":"^5.0.0","typescript":"^5.x","@sveltejs/package":"^2.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/kanade-svelte_0.1.0_1772758363376_0.09069292901561066","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@addidotlol/kanade-svelte","version":"0.1.1","_id":"@addidotlol/kanade-svelte@0.1.1","maintainers":[{"name":"embedvr","email":"npm@helium.email"}],"dist":{"shasum":"2ae49a366c3037b71e009da44bbc605fcf19cdbb","tarball":"https://registry.npmjs.org/@addidotlol/kanade-svelte/-/kanade-svelte-0.1.1.tgz","fileCount":6,"integrity":"sha512-wU908w4vzCaRlFOi6poNXpMsTjm6w4yo7++q9TNPmI3jSm2Cf+4gHDBwN1fo818Qa+dSIpcGKWgTDJsYqZTnOg==","signatures":[{"sig":"MEUCIQCuaF6V+vWq39k+ze0yu0zCeEoc+fpxH5BOTdmF8ddVsAIgPVtKkqK4pj1oDMvbpiXAKR0rRSdU1Gyax/jinugRyLw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5792},"type":"module","types":"./dist/index.d.ts","svelte":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"d90f1b9d8184008c166a5be9924585c7da0d2d41","scripts":{"dev":"svelte-package -i src --watch","build":"svelte-package -i src"},"_npmUser":{"name":"embedvr","email":"npm@helium.email"},"_npmVersion":"11.9.0","description":"Svelte 5 client for Kanade now-playing API","directories":{},"_nodeVersion":"25.6.1","_hasShrinkwrap":false,"devDependencies":{"svelte":"^5.0.0","typescript":"^5.x","@sveltejs/package":"^2.0.0"},"peerDependencies":{"svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/kanade-svelte_0.1.1_1772758597879_0.6789213317642557","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@addidotlol/kanade-svelte","version":"0.1.2","description":"Svelte 5 client for Kanade now-playing API","repository":{"type":"git","url":"git+https://github.com/addidotlol/kanade.git","directory":"packages/svelte"},"type":"module","svelte":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","svelte":"./dist/index.js","default":"./dist/index.js"}},"scripts":{"build":"svelte-package -i src","dev":"svelte-package -i src --watch"},"peerDependencies":{"svelte":"^5.0.0"},"devDependencies":{"@sveltejs/package":"^2.0.0","svelte":"^5.0.0","typescript":"^5.x"},"gitHead":"d90f1b9d8184008c166a5be9924585c7da0d2d41","_id":"@addidotlol/kanade-svelte@0.1.2","bugs":{"url":"https://github.com/addidotlol/kanade/issues"},"homepage":"https://github.com/addidotlol/kanade#readme","_nodeVersion":"25.6.1","_npmVersion":"11.9.0","dist":{"integrity":"sha512-o4z2fRtfnWGBMtb6sADt7tUiMIou7ixPks7fVhuR4p2mOhrgNBaokwMeGEZ0RvJmECrbjsCoeACdSLnXkYVZkg==","shasum":"8edca452a3786f22cfafa697f6b7021db175639c","tarball":"https://registry.npmjs.org/@addidotlol/kanade-svelte/-/kanade-svelte-0.1.2.tgz","fileCount":6,"unpackedSize":5912,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCnKX3dD6foRQ2qUU0jkFf+/o2O29aNeDz8g/67gyVefAIgeIAy6dLpwZSHYTX1xa1VTtxO3pQ0i6LtETV0nkM9gxw="}]},"_npmUser":{"name":"embedvr","email":"npm@helium.email"},"directories":{},"maintainers":[{"name":"embedvr","email":"npm@helium.email"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/kanade-svelte_0.1.2_1772758775528_0.030696904338770814"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-06T00:52:43.271Z","modified":"2026-03-06T00:59:35.816Z","0.1.0":"2026-03-06T00:52:43.503Z","0.1.1":"2026-03-06T00:56:38.038Z","0.1.2":"2026-03-06T00:59:35.683Z"},"description":"Svelte 5 client for Kanade now-playing API","maintainers":[{"name":"embedvr","email":"npm@helium.email"}],"readme":"# @addidotlol/kanade-svelte\n\nSvelte 5 client for [Kanade](https://github.com/addidotlol/kanade), a TidaLuna plugin that exposes what you're currently playing on Tidal over HTTP/SSE.\n\nYou'll need the Kanade plugin running on the same machine.\n\n## Install\n\n```sh\nnpm install @addidotlol/kanade-svelte\n```\n\n## Quick start\n\n```svelte\n<script>\n  import { createKanade } from '@addidotlol/kanade-svelte';\n\n  const kanade = createKanade();\n</script>\n\n{#if kanade.state.playing}\n  <img src={kanade.state.coverUrl} alt={kanade.state.album} />\n  <p>{kanade.state.title}</p>\n  <p>{kanade.state.artist}</p>\n{/if}\n```\n\n## API\n\n### `createKanade(options?)`\n\nConnects to the Kanade SSE endpoint and returns reactive state. Connects on creation unless you pass `autoConnect: false`.\n\n```ts\nconst kanade = createKanade({\n  url: 'http://localhost:24124', // default\n  autoConnect: true,             // default\n  reconnectInterval: 5000,       // ms, default\n});\n```\n\n`kanade.state` is a reactive `NowPlayingState` that updates as tracks change. `kanade.connected` tells you if the SSE connection is alive.\n\nYou also get `connect()`, `disconnect()`, and `fetch()` (a one-shot REST call that also updates `state`).\n\n### `NowPlayingState`\n\n```ts\ninterface NowPlayingState {\n  playing: boolean;\n  title: string;\n  artist: string;       // primary artist\n  artists: string[];    // all artists\n  album: string;\n  coverUrl: string;     // 1280x1280 album art\n  duration: number;     // seconds\n  currentTime: number;  // seconds\n  quality: string;      // \"HiRes\", \"High\", etc.\n  trackId: number | null;\n  url: string;          // tidal track URL\n}\n```\n\n## SSE events\n\nThe client listens for three event types from the server:\n\n- `state` -- sent immediately when you connect\n- `trackChange` -- a new track started\n- `playbackState` -- play/pause or progress tick\n\nEvery event carries the full state, so you don't need to merge partials.\n\n## Using the HTTP API directly\n\nYou don't need this package if you're not using Svelte. The plugin exposes a plain HTTP server:\n\n```sh\ncurl http://localhost:24124/        # JSON snapshot\ncurl -N http://localhost:24124/sse  # SSE stream\ncurl -L http://localhost:24124/cover # redirects to album art\n```\n","readmeFilename":"README.md","homepage":"https://github.com/addidotlol/kanade#readme","repository":{"type":"git","url":"git+https://github.com/addidotlol/kanade.git","directory":"packages/svelte"},"bugs":{"url":"https://github.com/addidotlol/kanade/issues"}}