{"_id":"@adrianfalleiro/vitess","_rev":"7-7fb5ecace93d88f6a3a5e9524f12ab01","name":"@adrianfalleiro/vitess","dist-tags":{"latest":"0.0.8"},"versions":{"0.0.3":{"name":"@adrianfalleiro/vitess","version":"0.0.3","_id":"@adrianfalleiro/vitess@0.0.3","maintainers":[{"name":"adrianfalleiro","email":"adrian@falleiro.com"}],"dist":{"shasum":"364845e0d1addad5e4843ee067e00bcf84da53cb","tarball":"https://registry.npmjs.org/@adrianfalleiro/vitess/-/vitess-0.0.3.tgz","fileCount":113,"integrity":"sha512-t7pXQK1rEqL3VyzQ7m16B2Gxt2dtDcSMKXdxSTGc25rGqa2KKYtZeq/lIwc++Q75zsuCOMZ1Ir0w77IHrzyWqQ==","signatures":[{"sig":"MEYCIQDTO1si9etEqd1itpxxmis4xlkEHMVgrS1h7BBShAwhKgIhAKj0pkMWjfqVMtGE6NeAxO5w9OtLEEPkQAohSrOPWTVj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2260416},"main":"dist/src/index.js","types":"./dist/src/index.d.ts","gitHead":"325a2ecc789635fcc8746701e502fd0f89a826cf","scripts":{"lint":"buf lint","test":"node -r ts-node/register --test test/**/*.ts","build":"tsc","format":"buf format -w","generate":"buf generate"},"_npmUser":{"name":"adrianfalleiro","email":"adrian@falleiro.com"},"_npmVersion":"10.9.2","description":"An expermintal Node.js client library for [Vitess](https://vitess.io/). This client uses Protocol Buffers and connect-rpc to communicate with Vitess gRPC services.","directories":{},"_nodeVersion":"22.13.1","dependencies":{"@bufbuild/protobuf":"^2.2.5","@connectrpc/connect":"^2.0.2","@connectrpc/connect-node":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.11.19","@bufbuild/buf":"^1.51.0","@bufbuild/protoplugin":"^2.2.5","@bufbuild/protoc-gen-es":"^2.2.5"},"_npmOperationalInternal":{"tmp":"tmp/vitess_0.0.3_1746550286422_0.06339659006848852","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@adrianfalleiro/vitess","version":"0.0.4","_id":"@adrianfalleiro/vitess@0.0.4","maintainers":[{"name":"adrianfalleiro","email":"adrian@falleiro.com"}],"dist":{"shasum":"edc949fc550032750516821fc9ec4f0a99736e1d","tarball":"https://registry.npmjs.org/@adrianfalleiro/vitess/-/vitess-0.0.4.tgz","fileCount":112,"integrity":"sha512-iqYcHBv2mugmL+ZAuxDOIplXHlCYdG15+cKbahcPEPkLqKBbU9LE75xV8XpYPnKbw8nFP+7Ynl2wQrOdogC5SA==","signatures":[{"sig":"MEYCIQCWlBvaLSnMc+LRn006+CUp8XG67U/5fUQE7HFxI+FSGgIhAMR98FXY3Nkm0XTHZQ1U+z54Eh0i33cU0r7zuEAEgLJU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2207189},"main":"dist/src/index.js","types":"./dist/src/index.d.ts","gitHead":"1c071f0ba5eb6277b38251e3f7977c703b04a1f5","scripts":{"lint":"buf lint","test":"node -r ts-node/register --test test/**/*.ts","build":"tsc","format":"buf format -w","generate":"buf generate"},"_npmUser":{"name":"adrianfalleiro","email":"adrian@falleiro.com"},"_npmVersion":"10.9.2","description":"An expermintal Node.js client library for [Vitess](https://vitess.io/). This client uses Protocol Buffers and connect-rpc to communicate with Vitess gRPC services.","directories":{},"_nodeVersion":"22.15.0","dependencies":{"@bufbuild/protobuf":"^2.2.5","@connectrpc/connect":"^2.0.2","@connectrpc/connect-node":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.11.19","@bufbuild/buf":"^1.51.0","@bufbuild/protoplugin":"^2.2.5","@bufbuild/protoc-gen-es":"^2.2.5"},"_npmOperationalInternal":{"tmp":"tmp/vitess_0.0.4_1748173192895_0.413994797598473","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@adrianfalleiro/vitess","version":"0.0.5","_id":"@adrianfalleiro/vitess@0.0.5","maintainers":[{"name":"adrianfalleiro","email":"adrian@falleiro.com"}],"dist":{"shasum":"3791249ee22b9a5844848976a3cfc12f52d2f4d9","tarball":"https://registry.npmjs.org/@adrianfalleiro/vitess/-/vitess-0.0.5.tgz","fileCount":112,"integrity":"sha512-BGrOYHcTdYIQFEQPcdewoeTkVLTAOmiu11OrzLFtfwi5gCVJXuGJnoe4yBQ8LerRPJEzRJ266pBnKG7iZQA47w==","signatures":[{"sig":"MEYCIQDEoyWIbYoEy33kDksu7FPBcZ/F4JLfw2A8KhHOAc0ydAIhAJ9DUfnPs7Mdt9SvIGAQ5KbCgIKEJ4w7hskSG6sXp/fe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2207273},"main":"dist/src/index.js","types":"./dist/src/index.d.ts","gitHead":"cf27ec8b48a0c2af65f1acd918b0105f4bd63c25","scripts":{"lint":"buf lint","test":"node -r ts-node/register --test test/**/*.ts","build":"tsc","format":"buf format -w","generate":"buf generate"},"_npmUser":{"name":"adrianfalleiro","email":"adrian@falleiro.com"},"_npmVersion":"10.9.2","description":"An expermintal Node.js client library for [Vitess](https://vitess.io/). This client uses Protocol Buffers and connect-rpc to communicate with Vitess gRPC services.","directories":{},"_nodeVersion":"22.15.0","dependencies":{"@bufbuild/protobuf":"^2.2.5","@connectrpc/connect":"^2.0.2","@connectrpc/connect-node":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.11.19","@bufbuild/buf":"^1.51.0","@bufbuild/protoplugin":"^2.2.5","@bufbuild/protoc-gen-es":"^2.2.5"},"_npmOperationalInternal":{"tmp":"tmp/vitess_0.0.5_1748187635683_0.5041976659261109","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@adrianfalleiro/vitess","version":"0.0.6","_id":"@adrianfalleiro/vitess@0.0.6","maintainers":[{"name":"adrianfalleiro","email":"adrian@falleiro.com"}],"dist":{"shasum":"830811d56f803fdd3d2e27d5c55e90cc5a61c389","tarball":"https://registry.npmjs.org/@adrianfalleiro/vitess/-/vitess-0.0.6.tgz","fileCount":112,"integrity":"sha512-f7z0+6unoPInlaHAQsYEbE+uuQN3ZaVvgnRLXFPxe6PR2wYLa6wtA/eoxTtXYM8JAHcED/8sfHPsPwIsfmb5kg==","signatures":[{"sig":"MEUCIDh4cGo/LCMvK/C7bIicS/zbxffT1FfcGmZ4Mg3vGOd8AiEAn5UhFvV8QdV5vYoDR9WSkiUh6Cn/EKc1Ks85HUn68ZU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2208295},"main":"dist/src/index.js","types":"./dist/src/index.d.ts","gitHead":"0fb2e50fe5014be7175cccffddffc7fcaa0f831f","scripts":{"lint":"buf lint","test":"node -r ts-node/register --test test/**/*.ts","build":"tsc","format":"buf format -w","generate":"buf generate"},"_npmUser":{"name":"adrianfalleiro","email":"adrian@falleiro.com"},"_npmVersion":"10.9.2","description":"An expermintal Node.js client library for [Vitess](https://vitess.io/). This client uses Protocol Buffers and connect-rpc to communicate with Vitess gRPC services.","directories":{},"_nodeVersion":"22.15.0","dependencies":{"@bufbuild/protobuf":"^2.2.5","@connectrpc/connect":"^2.0.2","@connectrpc/connect-node":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.11.19","@bufbuild/buf":"^1.51.0","@bufbuild/protoplugin":"^2.2.5","@bufbuild/protoc-gen-es":"^2.2.5"},"_npmOperationalInternal":{"tmp":"tmp/vitess_0.0.6_1748260606432_0.26313919761710713","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@adrianfalleiro/vitess","version":"0.0.7","_id":"@adrianfalleiro/vitess@0.0.7","maintainers":[{"name":"adrianfalleiro","email":"adrian@falleiro.com"}],"dist":{"shasum":"348abe232b051609eac2c27fb364d48bbc3523fa","tarball":"https://registry.npmjs.org/@adrianfalleiro/vitess/-/vitess-0.0.7.tgz","fileCount":112,"integrity":"sha512-NUXBjHMSGuzNfgE5j0PM0KCd1365lund4Ar1LFQbW3iDmGYAwHC9zKqiNi6kLjOnWKd3lnvIl2kTxT6TYTCB7A==","signatures":[{"sig":"MEUCIQCC1wIchlXq+wvYIvCYNvNuxpbgfCvI3rcE42M/TClNBwIgI2vOSOqMK/4MnpYGKh89kY86kuJ8B2riMhJM8XH01wQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2208301},"main":"dist/src/index.js","types":"./dist/src/index.d.ts","gitHead":"a9fce920d8c62f8db9ba1cf83b72a664d62d171f","scripts":{"lint":"buf lint","test":"node -r ts-node/register --test test/**/*.ts","build":"tsc","format":"buf format -w","generate":"buf generate"},"_npmUser":{"name":"adrianfalleiro","email":"adrian@falleiro.com"},"_npmVersion":"10.9.2","description":"An expermintal Node.js client library for [Vitess](https://vitess.io/). This client uses Protocol Buffers and connect-rpc to communicate with Vitess gRPC services.","directories":{},"_nodeVersion":"22.15.0","dependencies":{"@bufbuild/protobuf":"^2.2.5","@connectrpc/connect":"^2.0.2","@connectrpc/connect-node":"^2.0.2"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.2","typescript":"^5.3.3","@types/node":"^20.11.19","@bufbuild/buf":"^1.51.0","@bufbuild/protoplugin":"^2.2.5","@bufbuild/protoc-gen-es":"^2.2.5"},"_npmOperationalInternal":{"tmp":"tmp/vitess_0.0.7_1748261155771_0.2247058143220717","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@adrianfalleiro/vitess","version":"0.0.8","scripts":{"generate":"buf generate","lint":"buf lint","format":"buf format -w","test":"node -r ts-node/register --test test/**/*.ts","build":"tsc"},"main":"dist/src/index.js","dependencies":{"@bufbuild/protobuf":"^2.11.0","@connectrpc/connect":"^2.1.1","@connectrpc/connect-node":"^2.1.1"},"devDependencies":{"@bufbuild/buf":"^1.66.0","@bufbuild/protoc-gen-es":"^2.11.0","@bufbuild/protoplugin":"^2.11.0","@types/node":"^25.3.2","ts-node":"^10.9.2","typescript":"^5.9.3"},"gitHead":"1d2c67886417967488dd78f0a34884a24877c9f1","types":"./dist/src/index.d.ts","_id":"@adrianfalleiro/vitess@0.0.8","description":"An expermintal Node.js client library for [Vitess](https://vitess.io/). This client uses Protocol Buffers and connect-rpc to communicate with Vitess gRPC services.","_nodeVersion":"24.11.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-dOcFHo7q/v/gCZaLOufi0xs0Sb58HQLow3P//SvNdOQ6bKsutiOx7HUJjVn/f03xMShrJEj9AWWUvj2CHoOG7Q==","shasum":"2692f7df624d73ae7dd18d5756f32c9a2cca071c","tarball":"https://registry.npmjs.org/@adrianfalleiro/vitess/-/vitess-0.0.8.tgz","fileCount":296,"unpackedSize":8409659,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGLa4aIxnBAQuWr+z7kbLaB+2pV/yshCZmMpfzDf8eB5AiBxvrIGCixnduUFv55UCqbfmqglLgHoTFcEM5Ly4TU6QA=="}]},"_npmUser":{"name":"adrianfalleiro","email":"adrian@falleiro.com"},"directories":{},"maintainers":[{"name":"adrianfalleiro","email":"adrian@falleiro.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vitess_0.0.8_1772209595854_0.11809400292270666"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-06T16:51:26.421Z","modified":"2026-02-27T16:26:36.174Z","0.0.3":"2025-05-06T16:51:26.607Z","0.0.4":"2025-05-25T11:39:53.110Z","0.0.5":"2025-05-25T15:40:35.911Z","0.0.6":"2025-05-26T11:56:46.712Z","0.0.7":"2025-05-26T12:05:56.090Z","0.0.8":"2026-02-27T16:26:36.037Z"},"description":"An expermintal Node.js client library for [Vitess](https://vitess.io/). This client uses Protocol Buffers and connect-rpc to communicate with Vitess gRPC services.","maintainers":[{"name":"adrianfalleiro","email":"adrian@falleiro.com"}],"readme":"# Vitess Node.js Client\n\nAn expermintal Node.js client library for [Vitess](https://vitess.io/). This client uses Protocol Buffers and connect-rpc to communicate with Vitess gRPC services.\n\n## Features\n\n- Connect to Vitess services using gRPC\n- Execute queries against Vitess databases with proper type handling\n- VStream support for change data capture\n- Type-safe interfaces using TypeScript\n\n## Supported services\n\n- [x] vtgate\n- [x] binlog\n- [x] vtctl\n- [x] vtcld\n- [x] tablemanager\n- [x] query\n\n## Installation\n\n```bash\nnpm install vitess-node\n```\n\n## Usage\n\n### Basic Query Execution\n\n```typescript\nimport { VtGate, createBindVariable } from \"@adrianfalleiro/vitess\";\n\n// Create the Vitess client\nconst client = new VtGate({\n  baseUrl: \"http://localhost:15991\",\n});\n\n// Execute a simple query\nconst result = await client.execute({\n  query: {\n    sql: \"SELECT * FROM customer\",\n  },\n});\nconsole.log(result);\n\n// Query with bind variables\nconst result = await client.executeBatch({\n  queries: [\n    {\n      sql: \"SELECT * FROM customer WHERE email = :email\",\n      bindVariables: {\n        email: createBindVariable(\"alice@domain.com\"),\n      },\n    },\n  ],\n});\n```\n\n### Streaming Query Results\n\n```typescript\nimport { VtGate } from \"@adrianfalleiro/vitess\";\n\n// Create the Vitess client\nconst client = new VtGate({\n  baseUrl: \"http://localhost:15991\",\n});\n\n// Create an abort controller to stop the stream when needed\nconst controller = new AbortController();\n\n// Stream query results\nconst stream = client.streamExecute(\n  {\n    query: {\n      sql: \"SELECT * FROM customer LIMIT 100\",\n    },\n  },\n  { controller }\n);\n\n// Process the stream\nfor await (const response of stream) {\n  if (response.row) {\n    console.log(\"Row:\", response.row);\n  }\n}\n\n// To kill/close the connection at any time:\ncontroller.abort();\n```\n\n### Transactions\n\n```typescript\nimport { VtGate, createBindVariable } from \"@adrianfalleiro/vitess\";\n\n// Create the Vitess client\nconst client = new VtGate({\n  baseUrl: \"http://localhost:15991\",\n});\n\n// Start a transaction\nconst beginResult = await client.execute({\n  query: {\n    sql: \"BEGIN\",\n  },\n});\n\n// Get the session from the result (contains transaction state)\nconst session = beginResult.session;\n\ntry {\n  // Execute statement in transaction\n  const result1 = await client.execute({\n    session, // Pass the session to continue the transaction\n    query: {\n      sql: \"INSERT INTO customer (name, email) VALUES (:name, :email)\",\n      bindVariables: {\n        name: createBindVariable(\"John Doe\"),\n        email: createBindVariable(\"john.doe@example.com\"),\n      },\n    },\n  });\n\n  // Execute another statement in the same transaction\n  const result2 = await client.execute({\n    session: result1.session, // Use the updated session from previous query\n    query: {\n      sql: \"SELECT * FROM customer WHERE email = :email\",\n      bindVariables: {\n        email: createBindVariable(\"john.doe@example.com\"),\n      },\n    },\n  });\n\n  // Commit the transaction\n  await client.execute({\n    session: result2.session,\n    query: {\n      sql: \"COMMIT\",\n    },\n  });\n} catch (error) {\n  // Rollback on error\n  await client.execute({\n    session,\n    query: {\n      sql: \"ROLLBACK\",\n    },\n  });\n}\n```\n\n### Using VStream for Change Data Capture\n\n```typescript\nimport { VtGate } from \"@adrianfalleiro/vitess\";\n\nconst vtgate = new VtGate({\n  baseUrl: \"http://localhost:15991\",\n});\n\n// Create an abort controller to stop the stream when needed\nconst controller = new AbortController();\n\n// Start the VStream\nconst vs = vtgate.vStream(\n  {\n    tabletType: \"REPLICA\",\n    vgtid: {\n      shardGtids: [\n        {\n          keyspace: \"commerce\",\n          shard: \"\",\n          tablePKs: [],\n        },\n      ],\n    },\n  },\n  { controller }\n);\n\n// Stop the listener after 15 seconds\nsetTimeout(() => controller.abort(), 15_000);\n\n// Process the stream events\nfor await (const { changes, lastVGtid } of vs) {\n  console.log(\"changes\", changes);\n  console.log(\"lastVGtid\", lastVGtid);\n}\n```\n\n## Development\n\n### Project Structure\n\n```\nvitess-node/\n├── src/             # Source code\n│   ├── gen/         # Generated Protocol Buffer code\n│   ├── lib/         # Core library\n│   └── index.ts     # Main exports\n├── proto/           # Protocol Buffer definitions\n├── test/            # Tests\n└── example/         # Example applications\n```\n\n### Running Tests\n\n```bash\n# Run all tests\nnpm run test\n```\n\n### Building the Project\n\n```bash\n# Generate Protocol Buffer code\nnpm run generate\n\n# Format protobuf files\nnpm run format\n\n# Lint protobuf files\nnpm run lint\n```\n\n## Requirements\n\n- Node.js 20 or higher\n- Vitess server running and accessible\n\n## License\n\nMIT - see LICENSE file for details\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n","readmeFilename":"README.md"}