{"_id":"@emdzej/bass-svelte","name":"@emdzej/bass-svelte","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@emdzej/bass-svelte","version":"0.1.0","description":"Svelte stores + Svelte 5 runes wrappers over @emdzej/bass-client","license":"MIT","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"peerDependencies":{"svelte":"^5.0.0","@emdzej/bass-client":"0.1.0"},"devDependencies":{"svelte":"^5.0.0","typescript":"^5.6.3","vitest":"^2.1.4","@emdzej/bass-client":"0.1.0"},"publishConfig":{"access":"public"},"scripts":{"build":"tsc -p tsconfig.build.json","typecheck":"tsc --noEmit","test":"vitest run --passWithNoTests","clean":"rm -rf dist .turbo"},"_id":"@emdzej/bass-svelte@0.1.0","_integrity":"sha512-FfRxRekoaNP8AQ3nAe16XdRaHjoXdyjTyr6prF/K9z8eiwKzOrG2i9McMk054+urDDlZgmtOxqR+wOwL3cbvwg==","_resolved":"/private/var/folders/7h/x_w_580x4s9dq3sq11tpvzkwy3nbj8/T/1f8da083a2d2104275ee4978c334beac/emdzej-bass-svelte-0.1.0.tgz","_from":"file:emdzej-bass-svelte-0.1.0.tgz","_nodeVersion":"22.22.1","_npmVersion":"11.16.0","dist":{"integrity":"sha512-FfRxRekoaNP8AQ3nAe16XdRaHjoXdyjTyr6prF/K9z8eiwKzOrG2i9McMk054+urDDlZgmtOxqR+wOwL3cbvwg==","shasum":"64a93a678c88bbe462c781e5fd4e6a734da53c86","tarball":"https://registry.npmjs.org/@emdzej/bass-svelte/-/bass-svelte-0.1.0.tgz","fileCount":6,"unpackedSize":8165,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEwqXz+kfUDjbyMn6QDwe/h0teoHmP0xzPQJDbMwjaPQAiBY7TSCEOaJVqYcZ8shXcsE31Yrii41+oJC2apmD0Ncpw=="}]},"_npmUser":{"name":"emdzej","email":"michal@jaskolski.pro"},"directories":{},"maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bass-svelte_0.1.0_1782726556772_0.4628491589522592"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-29T09:49:16.625Z","0.1.0":"2026-06-29T09:49:16.928Z","modified":"2026-06-29T09:49:17.117Z"},"maintainers":[{"name":"emdzej","email":"michal@jaskolski.pro"}],"description":"Svelte stores + Svelte 5 runes wrappers over @emdzej/bass-client","license":"MIT","readme":"# @emdzej/bass-svelte\n\nSvelte stores wrapping **[@emdzej/bass-client](https://www.npmjs.com/package/@emdzej/bass-client)**\nso synced keys feel native in Svelte apps.\n\n```sh\npnpm add @emdzej/bass-client @emdzej/bass-svelte\n```\n\nPeer deps: `svelte ^5`, `@emdzej/bass-client`.\n\n## Usage\n\n```svelte\n<script lang=\"ts\">\n  import { bassWritable, useBassAuth } from '@emdzej/bass-svelte';\n  import { bass } from '$lib/bass';\n\n  const theme = bassWritable(bass(), 'myapp-theme', 'light');\n  const auth = useBassAuth(bass());\n</script>\n\n<p>paired: {$auth.isPaired}</p>\n\n<select bind:value={$theme}>\n  <option value=\"light\">light</option>\n  <option value=\"dark\">dark</option>\n</select>\n```\n\n`$theme` reads from the local cache, assignments write through the bass\noutbox. When another device pushes a change, the store re-emits and\ncomponents using `$theme` re-render.\n\n## API\n\n| Function | Returns | Purpose |\n|---|---|---|\n| `bassWritable(bass, key, default)` | `Writable<string>` | Two-way sync — reads from local cache, writes go through bass. |\n| `bassReadable(bass, key, default)` | `Readable<string>` | Read-only sync — useful for derived/server-driven keys. |\n| `useBassAuth(bass)` | `Readable<AuthState>` | Re-emits on pair / refresh / unpair. |\n\nValues are strings (matching `localStorage`). For structured data,\n`JSON.stringify` on the way in and `JSON.parse` on the way out — or use the\nunderlying manual API on the `BassClient` directly.\n\n## Echo protection\n\nWhen an inbound remote change updates the store, the wrapper suppresses\nthe round-trip back to bass to avoid an echo loop. Outbound writes (your\ncomponent setting `$theme = 'dark'`) push as expected.\n\n## Full reference\n\nSee [the bass docs](https://github.com/emdzej/bass/blob/main/docs/API.md)\nand [`@emdzej/bass-client`](https://www.npmjs.com/package/@emdzej/bass-client).\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-08680336f65d443da4c74539f0968d49"}