{"_id":"@apsolut/n8n-nodes-turso","_rev":"3-d90e51835c89fbb6c25116fd0fc792db","name":"@apsolut/n8n-nodes-turso","dist-tags":{"latest":"0.9.1"},"versions":{"0.8.1":{"name":"@apsolut/n8n-nodes-turso","version":"0.8.1","keywords":["n8n-community-node-package","turso","libsql","sqlite","database"],"author":{"url":"https://github.com/apsolut","name":"Aleksandar Perisic","email":"hi@aleksandarperisic.com"},"license":"MIT","_id":"@apsolut/n8n-nodes-turso@0.8.1","maintainers":[{"name":"apsolut","email":"npm@apsolut.dev"}],"homepage":"https://github.com/apsolut/n8n-nodes-turso","bugs":{"url":"https://github.com/apsolut/n8n-nodes-turso/issues"},"n8n":{"nodes":["dist/nodes/Turso/Turso.node.js"],"strict":true,"credentials":["dist/credentials/TursoApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"26a7639e87033dce6091a53f3c8c5f11b75a16c1","tarball":"https://registry.npmjs.org/@apsolut/n8n-nodes-turso/-/n8n-nodes-turso-0.8.1.tgz","fileCount":11,"integrity":"sha512-AX/uCJ+/T5tiZ8ecRGxvHaoVjdJwbB7QbJ+O/9jM1bOD9PBVAad/L/7NdONzQQNfyi5LAN1CP0kcTDq7P9AqGg==","signatures":[{"sig":"MEUCIQDRyg2yVXKIinQI4XwqetsK9PFib26/FPRgRVW/318SagIgBpdP5aVwYeprwPieDa+NUIHVogRY7uzTxpcU3va9yq4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46845},"engines":{"node":">=20"},"gitHead":"81ff083a6d4c6db831604afa4648025e9948ccca","scripts":{"dev":"n8n-node dev","lint":"n8n-node lint","build":"n8n-node build","release":"n8n-node release","lint:fix":"n8n-node lint --fix","prepublishOnly":"n8n-node build && n8n-node lint"},"_npmUser":{"name":"apsolut","email":"npm@apsolut.dev"},"repository":{"url":"git+https://github.com/apsolut/n8n-nodes-turso.git","type":"git"},"_npmVersion":"10.9.7","description":"n8n community node for Turso / libSQL databases — zero runtime dependencies (HTTP pipeline API)","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","prettier":"^3.8.3","typescript":"^5.9.3","n8n-workflow":"^2.16.0","@n8n/node-cli":"^0.37.4"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-turso_0.8.1_1787693180078_0.5649242459217647","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@apsolut/n8n-nodes-turso","version":"0.9.0","keywords":["n8n-community-node-package","turso","libsql","sqlite","database"],"author":{"url":"https://github.com/apsolut","name":"Aleksandar Perisic","email":"hi@aleksandarperisic.com"},"license":"MIT","_id":"@apsolut/n8n-nodes-turso@0.9.0","maintainers":[{"name":"apsolut","email":"npm@apsolut.dev"}],"homepage":"https://github.com/apsolut/n8n-nodes-turso","bugs":{"url":"https://github.com/apsolut/n8n-nodes-turso/issues"},"n8n":{"nodes":["dist/nodes/Turso/Turso.node.js"],"strict":true,"credentials":["dist/credentials/TursoApi.credentials.js"],"n8nNodesApiVersion":1},"dist":{"shasum":"92386a93ea6689dbf7e0cfca67e580be5b0b7937","tarball":"https://registry.npmjs.org/@apsolut/n8n-nodes-turso/-/n8n-nodes-turso-0.9.0.tgz","fileCount":11,"integrity":"sha512-OaOzkRqXLvWQe4hLYVFdchTb6z6NqRk3zF1vGAG8+vF1NKHllwW/vRET0xJR/g10tQe+RbUFOgc/cTuSCHmR4Q==","signatures":[{"sig":"MEQCICWhwwKjGCRpmfXGzXqFYHpJd69tBlFQH6zUFbY0v406AiBYzMBJO6q9Gx7bRSL9Y0HCNzedLc8tvDYRBy8P7rxxMw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":54122},"engines":{"node":">=20"},"gitHead":"8e60e6d6a57295eb7657f1f87f33be2b2cfa478b","scripts":{"dev":"n8n-node dev","lint":"n8n-node lint","build":"n8n-node build","release":"n8n-node release","lint:fix":"n8n-node lint --fix","prepublishOnly":"n8n-node build && n8n-node lint"},"_npmUser":{"name":"apsolut","email":"npm@apsolut.dev"},"repository":{"url":"git+https://github.com/apsolut/n8n-nodes-turso.git","type":"git"},"_npmVersion":"10.9.7","description":"n8n community node for Turso / libSQL databases — zero runtime dependencies (HTTP pipeline API)","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.4","prettier":"^3.8.3","typescript":"^5.9.3","n8n-workflow":"^2.16.0","@n8n/node-cli":"^0.37.4"},"peerDependencies":{"n8n-workflow":"*"},"_npmOperationalInternal":{"tmp":"tmp/n8n-nodes-turso_0.9.0_1787695169655_0.7964083456332496","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@apsolut/n8n-nodes-turso","version":"0.9.1","description":"n8n community node for Turso / libSQL databases — zero runtime dependencies (HTTP pipeline API)","license":"MIT","keywords":["n8n-community-node-package","turso","libsql","sqlite","database"],"author":{"name":"Aleksandar Perisic","email":"hi@aleksandarperisic.com","url":"https://github.com/apsolut"},"homepage":"https://github.com/apsolut/n8n-nodes-turso","repository":{"type":"git","url":"git+https://github.com/apsolut/n8n-nodes-turso.git"},"bugs":{"url":"https://github.com/apsolut/n8n-nodes-turso/issues"},"engines":{"node":">=20"},"scripts":{"build":"n8n-node build","dev":"n8n-node dev","lint":"n8n-node lint","lint:fix":"n8n-node lint --fix","release":"n8n-node release","prepublishOnly":"n8n-node build && n8n-node lint"},"publishConfig":{"access":"public","provenance":true},"n8n":{"n8nNodesApiVersion":1,"strict":true,"credentials":["dist/credentials/TursoApi.credentials.js"],"nodes":["dist/nodes/Turso/Turso.node.js"]},"devDependencies":{"@n8n/node-cli":"^0.37.4","eslint":"^9.39.4","n8n-workflow":"^2.16.0","prettier":"^3.8.3","typescript":"^5.9.3"},"peerDependencies":{"n8n-workflow":"*"},"_id":"@apsolut/n8n-nodes-turso@0.9.1","gitHead":"e141d48ce08afbc125da57eee61baa941f53fdbc","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-dMgT/OMiRfRwzNaxnhGM87c3GgTBh9j/D7qAt+znauRAxWgBT7Ks+CI5z5+gK1ax1JyeLRqrxKE1K7r6d28PPQ==","shasum":"f8a7894fb9953c38be8960dfa7a2e90cab216df3","tarball":"https://registry.npmjs.org/@apsolut/n8n-nodes-turso/-/n8n-nodes-turso-0.9.1.tgz","fileCount":11,"unpackedSize":54122,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCQglJZLojNWFqxnDMwLfEFAScDA2yMNnC/OOPeAi+3nAIhAOa+CtOtvp3jn1hwb0lFXmCLnSqh5mkt2SnH5GTGetKU"}]},"_npmUser":{"name":"apsolut","email":"npm@apsolut.dev"},"directories":{},"maintainers":[{"name":"apsolut","email":"npm@apsolut.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/n8n-nodes-turso_0.9.1_1787696563553_0.35515714475205296"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-25T21:26:19.866Z","modified":"2026-08-25T22:22:43.829Z","0.8.1":"2026-08-25T21:26:20.227Z","0.9.0":"2026-08-25T21:59:29.802Z","0.9.1":"2026-08-25T22:22:43.673Z"},"bugs":{"url":"https://github.com/apsolut/n8n-nodes-turso/issues"},"author":{"name":"Aleksandar Perisic","email":"hi@aleksandarperisic.com","url":"https://github.com/apsolut"},"license":"MIT","homepage":"https://github.com/apsolut/n8n-nodes-turso","keywords":["n8n-community-node-package","turso","libsql","sqlite","database"],"repository":{"type":"git","url":"git+https://github.com/apsolut/n8n-nodes-turso.git"},"description":"n8n community node for Turso / libSQL databases — zero runtime dependencies (HTTP pipeline API)","maintainers":[{"name":"apsolut","email":"npm@apsolut.dev"}],"readme":"# n8n-nodes-turso\n\nn8n community node for [Turso](https://turso.tech/) / libSQL databases — **zero runtime dependencies**. Talks to the database over the [Hrana HTTP pipeline API](https://docs.turso.tech/sdk/http/reference), so there is no native driver to build and nothing extra to install.\n\n## Why\n\nn8n ships **Postgres** (raw SQL) and **Supabase** (PostgREST row CRUD). Turso is SQLite-compatible edge SQL with a generous free tier — great as a workflow state store, dedup ledger, or lightweight analytics DB — but has no built-in node.\n\n| n8n node | Protocol | Best for |\n|----------|----------|----------|\n| Postgres | PostgreSQL wire | Full SQL, self-hosted PG |\n| Supabase | PostgREST HTTP | Table CRUD without SQL |\n| **Turso** (this) | libSQL HTTP pipeline | Edge SQLite: state, dedup ledgers, prototypes |\n\n## Installation\n\n**Self-hosted n8n**: Settings → Community Nodes → Install → `@apsolut/n8n-nodes-turso`.\n\n## Credentials\n\nCreate a **Turso API** credential:\n\n- **Database URL** — `libsql://your-db-org.turso.io` (or `https://…`)\n- **Auth Token** — `turso db tokens create <db>`\n\nThe credential test runs `SELECT 1` against your database.\n\n## Operations\n\n### Execute Query\nArbitrary SQL with `?` placeholders. **Query Parameters** accepts a JSON array (`[40, \"text with, commas\"]` — safe for values containing commas) or a plain comma-separated list (`40, open`).\n\n### Execute Batch\nRun several statements in a **single pipeline round trip**. Each statement has its own SQL and parameters; results are returned per statement. Enable **Run as Transaction** to make the batch atomic: statements execute inside one transaction (via conditional Hrana batch steps) and every change rolls back if any statement fails.\n\n### Insert\nInsert one row per input item. Auto-map the input JSON (with an ignore list) or define columns explicitly. Values bind as typed `?` parameters — no SQL injection surface.\n\n### Select\nTable read with optional `WHERE` (parameterized), `ORDER BY`, and limit.\n\n### Update\nSet columns on rows matching a parameterized `WHERE` clause. Values and WHERE parameters bind as typed `?` placeholders. Runs once per input item, so values can be expression-driven.\n\n### Delete\nRemove rows matching a parameterized `WHERE` clause. Leaving `WHERE` empty deletes **all** rows in the table — use with care.\n\n### List Tables\nList user tables (`sqlite_master`), or describe one table's columns (`PRAGMA table_info`) when a table name is given.\n\n## Behavior notes\n\n- **Identifiers are quoted.** Table and column names (including auto-mapped input keys) are bound as quoted SQLite identifiers, so they cannot alter the SQL. Names are used verbatim — `main.users` is treated as one identifier containing a dot, not a schema qualifier.\n- **Big integers stay exact.** Integer values beyond `Number.MAX_SAFE_INTEGER` (2⁵³ − 1) — int64 ids, snowflake ids — are returned as strings instead of silently losing precision.\n- **Query metrics.** Set *Output Only Result Data* to false (under Options) to include `rowsAffected`, `lastInsertRowid`, and per-statement server metrics: `rowsRead`, `rowsWritten`, `queryDurationMs`. Turso bills by rows read/written, so this doubles as cost observability.\n\n## Patterns that work well\n\n- **Idempotent ledgers**: `INSERT OR IGNORE INTO seen (key) VALUES (?)` — safe under retries.\n- **Upserts**: `INSERT OR REPLACE …` via Execute Query.\n- **Read once per run**: enable *Execute Once* on lookup queries, or they run once per input item (standard n8n behavior).\n- Turso node output **replaces** the incoming item — read earlier fields via `$('Node Name').first().json.x`.\n\n## Compatibility\n\n- n8n ≥ 1.x (built with `@n8n/node-cli`; tested on n8n 2.x)\n- Turso Cloud and any libSQL server exposing the Hrana HTTP endpoint (`/v2/pipeline`)\n- Not supported: local `file:` SQLite and `:memory:` databases (those require the native `@libsql/client`; this node is deliberately HTTP-only to stay dependency-free)\n\n## Try it\n\n- Import [examples/turso-smoke.workflow.json](examples/turso-smoke.workflow.json) into n8n and attach your credential.\n- Or test the transport without n8n: `npm run build && TURSO_DATABASE_URL=... TURSO_AUTH_TOKEN=... node test/protocol-smoke.mjs`\n\n## License\n\n[MIT](LICENSE)\n","readmeFilename":"README.md"}