{"_id":"@bspeckco/tinysynq-tauri","_rev":"4-75612df3ecce472019808f4872fe1c5e","name":"@bspeckco/tinysynq-tauri","dist-tags":{"latest":"0.3.2"},"versions":{"0.3.0":{"name":"@bspeckco/tinysynq-tauri","version":"0.3.0","license":"MIT","_id":"@bspeckco/tinysynq-tauri@0.3.0","maintainers":[{"name":"bspeckco","email":"admin.n@bluespeck.co"}],"dist":{"shasum":"1b48f4f931533f4f00e7e2ed87df57bee02da73b","tarball":"https://registry.npmjs.org/@bspeckco/tinysynq-tauri/-/tinysynq-tauri-0.3.0.tgz","fileCount":16,"integrity":"sha512-e8R9kyoKjwvpjEgjejGX4l7ChMmoQbgllJBuNJ0MFgLJkN9tV6MyxLVS1xBII6tMQy7nYH/OVW8nPac5VYUOrQ==","signatures":[{"sig":"MEQCIHy6p7YYHV6X8bHzT1ryUIgCG64AxUq+ZA+J5YzNbCqBAiB5wsESAEeRGx1LxUKqzwRbXChgYtWivs2ACs5Gollbpw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82710},"main":"./dist/tinysynq.umd.js","type":"module","types":"./dist/index.d.ts","unpkg":"./dist/tinysynq.umd.js","module":"./dist/tinysynq.es.js","source":"src/index.ts","engines":{"node":">=18.0.0"},"exports":{"types":"./dist/index.d.ts","import":"./dist/tinysynq.es.js","default":"./dist/tinysynq.es.js","require":"./dist/tinysynq.umd.js"},"gitHead":"bcaca4e4114895e7619384185061582f2f49980a","scripts":{"test":"vitest --run","build":"vite build","watch":"vite build --watch","prepare":"pnpm build"},"_npmUser":{"name":"bspeckco","email":"admin.n@bluespeck.co"},"_npmVersion":"10.9.2","description":"An adapter library for integrating [TinySynq](https://github.com/bspeck/tinysynq) with Tauri applications using the [`tauri-plugin-sql`](https://v2.tauri.app/plugin/sql/).","directories":{},"_nodeVersion":"22.17.1","dependencies":{"@bspeckco/tinysynq-lib":"2.5.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.3.5","husky":"^9.0.11","tslib":"^2.6.3","tslog":"^4.9.3","nanoid":"^3.3.7","vitest":"^1.2.2","typescript":"^5.5.4","@types/node":"^20.15.0","vite-plugin-dts":"^3.9.1","@bspeckco/tauri-plugin-sqlite":"^0.1.5"},"peerDependencies":{"tslog":"^4.9.3","nanoid":"^3.3.7","@bspeckco/tauri-plugin-sqlite":"^0.1.5"},"_npmOperationalInternal":{"tmp":"tmp/tinysynq-tauri_0.3.0_1762065593903_0.352488961174684","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@bspeckco/tinysynq-tauri","version":"0.3.1","license":"MIT","_id":"@bspeckco/tinysynq-tauri@0.3.1","maintainers":[{"name":"bspeckco","email":"admin.n@bluespeck.co"}],"dist":{"shasum":"f15012e0f91f1214e190032774c7f847fe2b5f02","tarball":"https://registry.npmjs.org/@bspeckco/tinysynq-tauri/-/tinysynq-tauri-0.3.1.tgz","fileCount":16,"integrity":"sha512-1wQgko7d4v6YS0DlXZS9Mn+kZFUXIie/u0d8BmHZwSf/Vtx6RqPn4gAvLOenDIK+VtOsS8zzfaZiqCDdRWpWFQ==","signatures":[{"sig":"MEUCIQCQ/CYtdk9yt65NEcvevp6NzgHrW5q8NRM7mNbrQmduoQIgNzA4G58QQVQ+ms3dG1Aji2CvaLB8ej9V4DzfPV9gsNA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82807},"main":"./dist/tinysynq.umd.js","type":"module","types":"./dist/index.d.ts","unpkg":"./dist/tinysynq.umd.js","module":"./dist/tinysynq.es.js","source":"src/index.ts","engines":{"node":">=18.0.0"},"exports":{"types":"./dist/index.d.ts","import":"./dist/tinysynq.es.js","default":"./dist/tinysynq.es.js","require":"./dist/tinysynq.umd.js"},"gitHead":"6325a964e3267d288f0b4037f1f9cbd319bd0f14","scripts":{"test":"vitest --run","build":"vite build","watch":"vite build --watch","prepare":"pnpm build"},"_npmUser":{"name":"bspeckco","email":"admin.n@bluespeck.co"},"_npmVersion":"9.8.1","description":"An adapter library for integrating [TinySynq](https://github.com/bspeck/tinysynq) with Tauri applications using the [`tauri-plugin-sql`](https://v2.tauri.app/plugin/sql/).","directories":{},"_nodeVersion":"18.18.2","dependencies":{"@bspeckco/tinysynq-lib":"2.5.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.3.5","husky":"^9.0.11","tslib":"^2.6.3","tslog":"^4.9.3","nanoid":"^3.3.7","vitest":"^1.2.2","typescript":"^5.5.4","@types/node":"^20.15.0","vite-plugin-dts":"^3.9.1","@bspeckco/tauri-plugin-sqlite":"^0.1.5"},"peerDependencies":{"tslog":"^4.9.3","nanoid":"^3.3.7","@bspeckco/tauri-plugin-sqlite":"^0.1.5"},"_npmOperationalInternal":{"tmp":"tmp/tinysynq-tauri_0.3.1_1762073988848_0.8763688205783291","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@bspeckco/tinysynq-tauri","version":"0.3.2","license":"MIT","_id":"@bspeckco/tinysynq-tauri@0.3.2","maintainers":[{"name":"bspeckco","email":"admin.n@bluespeck.co"}],"dist":{"shasum":"4db80422171544a18806c3494a0bfe8a55ed8a8d","tarball":"https://registry.npmjs.org/@bspeckco/tinysynq-tauri/-/tinysynq-tauri-0.3.2.tgz","fileCount":16,"integrity":"sha512-g+xgcm1LcDun6V5IWtfUU7XJpkKYZciGcA5Qcns7pdVoeVMZ8worYSoCye4JpIB/96pBEkGE3IlZeRuCa901eQ==","signatures":[{"sig":"MEQCIAV1/c4EgyNvb+4lLQ4jMFGURV6AGqRV8qzW30iKUdq0AiBfUAuaPb2X8mL1E6tWJbY+Mn0j40JDqDD+Aqvj5tGj7Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63512},"main":"./dist/tinysynq.umd.js","type":"module","types":"./dist/index.d.ts","unpkg":"./dist/tinysynq.umd.js","module":"./dist/tinysynq.es.js","source":"src/index.ts","engines":{"node":">=18.0.0"},"exports":{"types":"./dist/index.d.ts","import":"./dist/tinysynq.es.js","default":"./dist/tinysynq.es.js","require":"./dist/tinysynq.umd.js"},"gitHead":"43758b15006beba0b6412b7b2eb2833494929656","scripts":{"test":"vitest --run","build":"vite build","watch":"vite build --watch","prepare":"pnpm build"},"_npmUser":{"name":"bspeckco","email":"admin.n@bluespeck.co"},"_npmVersion":"9.8.1","description":"TinySynq bindings for Tauri desktop apps.   This package adapts `@bspeckco/tinysynq-lib` to the [`@tauri-apps/plugin-sql`](https://v2.tauri.app/plugin/sql/) driver and ships a WebSocket client you can embed in your frontend to pull/push changes from a Tin","directories":{},"_nodeVersion":"18.18.2","dependencies":{"@bspeckco/tinysynq-lib":"2.5.2"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.3.5","husky":"^9.0.11","tslib":"^2.6.3","tslog":"^4.9.3","nanoid":"^3.3.7","vitest":"^1.2.2","typescript":"^5.5.4","@types/node":"^20.15.0","vite-plugin-dts":"^3.9.1","@bspeckco/tauri-plugin-sqlite":"^0.1.5"},"peerDependencies":{"tslog":"^4.9.3","nanoid":"^3.3.7","@bspeckco/tauri-plugin-sqlite":"^0.1.5"},"_npmOperationalInternal":{"tmp":"tmp/tinysynq-tauri_0.3.2_1762701707166_0.16827110667854517","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2025-11-02T06:39:53.793Z","modified":"2026-02-18T12:37:36.418Z","0.3.0":"2025-11-02T06:39:54.097Z","0.3.1":"2025-11-02T08:59:49.046Z","0.3.2":"2025-11-09T15:21:47.361Z"},"license":"MIT","description":"TinySynq bindings for Tauri desktop apps.   This package adapts `@bspeckco/tinysynq-lib` to the [`@tauri-apps/plugin-sql`](https://v2.tauri.app/plugin/sql/) driver and ships a WebSocket client you can embed in your frontend to pull/push changes from a Tin","maintainers":[{"email":"admin.n@bluespeck.co","name":"lnoir"}],"readme":"# tinysynq-tauri\n\nTinySynq bindings for Tauri desktop apps.  \nThis package adapts `@bspeckco/tinysynq-lib` to the [`@tauri-apps/plugin-sql`](https://v2.tauri.app/plugin/sql/) driver and ships a WebSocket client you can embed in your frontend to pull/push changes from a TinySynq hub.\n\n## What’s inside\n\n- `initTinySynq` – bootstraps a `TinySynq` instance backed by the Tauri SQL plugin.\n- `TinySynqClient` – browser/WebView-side helper for WebSocket sync.\n- Re-exports of the core TinySynq types plus `TinySynqClientConfig`.\n\n## Prerequisites\n\n- Node.js ≥ 18.18.2\n- Tauri v2 project configured with:\n  - Rust crate `tauri-plugin-sql` with the `sqlite` feature\n  - Frontend package `@tauri-apps/plugin-sql`\n- A TinySynq hub (e.g. `@bspeckco/tinysynq-node`) reachable over WebSockets.\n\n## Installation\n\n```bash\npnpm add @bspeckco/tinysynq-tauri\n# core dependencies (if not already present)\npnpm add @bspeckco/tinysynq-lib nanoid tslog\n```\n\n## Quick start\n\n```ts\n// src/lib/sync.ts\nimport Database from '@tauri-apps/plugin-sql';\nimport { initTinySynq, TinySynqClient } from '@bspeckco/tinysynq-tauri';\n\nexport async function bootstrapSync() {\n  const sqlite = await Database.load('sqlite:app.db');\n\n  const ts = await initTinySynq({\n    sqlite3: sqlite,\n    prefix: 'app',\n    tables: [\n      {\n        name: 'todos',\n        id: 'todo_id',\n        editable: ['title', 'completed'],\n      },\n    ],\n    preInit: [\n      `CREATE TABLE IF NOT EXISTS todos (\n         todo_id TEXT PRIMARY KEY,\n         title TEXT NOT NULL,\n         completed INTEGER DEFAULT 0,\n         updated_at TEXT DEFAULT (STRFTIME('%Y-%m-%dT%H:%M:%f','now'))\n       );`,\n    ],\n    logOptions: { type: 'pretty', minLevel: 3 },\n  });\n\n  const client = new TinySynqClient({\n    ts,\n    hostname: 'localhost',\n    port: 7174,\n    secure: false,\n  });\n\n  await client.connect();\n  await client.pull(); // initial sync\n\n  client.addEventListener('changes', (event) => {\n    console.log('Applied remote changes', event.detail);\n  });\n\n  return { ts, client };\n}\n```\n\nFrom your Svelte/React component:\n\n```ts\nimport { onMount } from 'svelte';\nimport { bootstrapSync } from '$lib/sync';\n\nonMount(async () => {\n  const { client } = await bootstrapSync();\n  await client.push(); // optional: upload local changes\n\n  return () => client.ws?.close();\n});\n```\n\n## API reference\n\n### `initTinySynq(options: TinySynqOptions)`\n\nCreates and bootstraps a `TinySynq` instance using the supplied Tauri SQL connection.\n\nRequired:\n- `prefix` – namespace for TinySynq system tables.\n- `tables` – array of `{ name, id, editable }`.\n- One of `sqlite3`, `filePath`, or `adapter`. In Tauri you typically pass `sqlite3`.\n\nOptional highlights:\n- `preInit` / `postInit` SQL arrays.\n- `logOptions`, `debug`, `wal`, `batchSize`.\n- `telemetry` emitter for lab tooling.\n\nReturns a fully initialised `TinySynq`.\n\n### `TinySynq`\n\nExtends `TinySynqAsync`. You usually interact with the instance returned from `initTinySynq` to query change state (`getFilteredChanges`, `applyChangesToLocalDB`, etc.).\n\n### `TinySynqClient`\n\n```ts\nnew TinySynqClient(config: TinySynqClientConfig)\n```\n\nKey config fields:\n\n| Field        | Type                | Default      | Description                                      |\n| ------------ | ------------------- | ------------ | ------------------------------------------------ |\n| `ts`         | `TinySynq` (required)| —            | The TinySynq instance returned by `initTinySynq`.|\n| `hostname`   | `string`            | `localhost`  | Hostname/IP of the sync hub.                     |\n| `port`       | `number`            | `7174`       | Hub port.                                        |\n| `secure`     | `boolean`           | `false`      | Use `wss://` when `true`.                        |\n| `wsToken`    | `string`            | —            | Optional token appended as `?token=`.            |\n| `logOptions` | `Logger` settings   | `{ name: 'tinysynq-client', minLevel: 3, type: 'json' }` | Forwarded to `tslog`. |\n| `telemetry`  | `TinySynqTelemetryEmitter` | — | Receives structured lifecycle events.            |\n\nMethods:\n- `connect()` → `Promise<WebSocket>` – opens the socket.\n- `push(since?)` – sends pending local changes.\n- `pull(since?)` – requests remote changes.\n- `isOpenOrConnecting()` – connection state helper.\n\nEvents (inherited from `EventTarget`):\n- `changes` – fired with `event.detail = Change[]` after applying remote mutations.\n- `error` – fired when the hub responds with a NACK or connection error.\n\n### Type exports\n\nThe package re-exports:\n\n- Core TinySynq types: `TinySynqOptions`, `SyncableTable`, `Change`, `QueryParams`, `LogLevel`.\n- Local types: `TinySynq`, `TinySynqClient`, `TinySynqClientConfig`.\n\n## Notes\n\n- The default export (`import initTinySynq from '@bspeckco/tinysynq-tauri'`) is deprecated; use named imports instead.\n- WAL mode is enabled by default. Disable it by passing `wal: false` if your environment cannot support WAL.\n- When using `telemetry`, the provided emitter also drives TinySynq server-side instrumentation, enabling consistent lab tooling across platforms.\n\n## Development scripts\n\n```bash\npnpm i\npnpm test\npnpm build\npnpm watch\n```\n\n## License\n\n[MIT](./LICENSE)\n","readmeFilename":"README.md"}