Home - TundraSoft/tundra-connect GitHub Wiki
🔗 Tundra Connect
Vendor API integrations for Deno, Bun, and Node — built on
@tundralibs/restlerand@tundralibs/guardian
Tundra Connect wraps popular third-party vendor APIs in typed, tested,
cross-runtime TypeScript clients. Each connect is an independently versioned
package published to JSR under the
@tundraconnect scope. Requests and responses are validated at runtime, and
failures surface as one typed error class per vendor.
- Payments: Stripe, PayPal, Razorpay, Dodo Payments
- Object storage: AWS S3 and S3-compatible stores (Cloudflare R2, MinIO, DigitalOcean Spaces), Google Cloud Storage, Azure Blob Storage
- Messaging and notifications: Slack, Discord, Telegram, Twilio SMS and voice, SendGrid and Cloudflare email, ntfy push
- Market data and prediction markets: CoinGecko, Open Exchange Rates, Kalshi, Polymarket, Binance (real-time WebSocket feeds for all three), Pyth Pro
- Search, data and operations: Algolia, Upstash Redis, Sentry, OpenWeatherMap
- URL safety: Google Web Risk, URLhaus (abuse.ch)
- Analytics: Google Analytics 4 server-side events (Measurement Protocol)
- Cloudflare platform: DNS records and zones, Cloudflare for SaaS custom hostnames, Turnstile token verification
- TLS certificates: Google Cloud Certificate Manager managed certificates and certificate map entries
See CONVENTIONS.md for the shared structure and CONTRIBUTING.md for the workflow.
Runs on Deno, Bun and Node; Web-APIs-only, so it also works on Cloudflare Workers (smoke-tested in CI inside workerd) and in the browser (not CI-verified).
📦 Connects
- Algolia
— Typed Algolia Search client: search, save, fetch, delete and browse index records, and wait for indexing tasks to finish.
- AzureBlob
— Typed Azure Blob Storage client with Shared Key or SAS auth: upload, download, list, inspect and delete blobs, including streamed block uploads and downloads for large files.
- Binance
— Typed Binance.com spot market-data streams for Deno, Bun, Node.js, browsers and Cloudflare Workers: raw trades, best bid/ask and full-depth order-book diffs over WebSocket, with reconnects and gap detection.
- CloudflareDNS
— Typed Cloudflare DNS client: list, create, update, replace, delete and batch-edit DNS records in a zone, export the zone as BIND, and look up zones by name.
- CloudflareEmail
— Typed Cloudflare Email Sending client: send transactional email with attachments, validated locally before the request is made.
- CloudflareSaaS
— Typed Cloudflare for SaaS client: create, list, inspect, update and delete custom hostnames with their TLS and ownership validation state, manage the fallback origin, and read the hostname quota.
- CloudflareTurnstile
— Typed Cloudflare Turnstile client: verify a widget token server-side with siteverify, with hostname and action checks, a hard per-call deadline, and failed challenges as answers instead of errors.
- CoinGecko
— Typed CoinGecko client for the demo and pro tiers: coin prices, market data and the full coin list.
- Discord
— Typed Discord client: post messages through a webhook or a bot token, and verify Ed25519-signed interaction webhooks.
- DodoPayments
— Typed Dodo Payments client: create, verify and refund payments, manage subscriptions and plan changes, sync products and discount codes, open the customer portal, and verify Standard Webhooks signatures.
- GCS
— Typed Google Cloud Storage client with bearer or service-account auth: upload, download, list, inspect and delete objects, including resumable streamed uploads for large files.
- GoogleAnalytics
— Typed Google Analytics 4 Measurement Protocol client: send server-side events and validate them against the debug endpoint, with GA4's event, parameter and user-property limits checked before the request is made.
- GoogleCertificateManager
— Typed Google Cloud Certificate Manager client: create, read, list and delete managed TLS certificates and certificate map entries, poll long-running operations, with service-account auth on Workers, Deno, Bun and Node.
- GoogleWebRisk
— Typed Google Web Risk client: check a URL against Google's malware, phishing and unwanted-software lists with the Lookup API's uris:search, under a hard per-call deadline.
- Kalshi
— Typed Kalshi client: public market data, plus RSA-PSS-signed trading — balance, positions, fills and orders; place, amend and cancel orders — and a signed real-time WebSocket feed for order books, trades, fills and order updates.
- ntfy
— Typed ntfy.sh client for publishing push notifications to a topic.
- OpenExchange
— Typed Open Exchange Rates client: latest and historical rates, time series, currency conversion, OHLC data and account usage.
- OpenWeatherMap
— Typed OpenWeatherMap client: current weather and 5-day / 3-hour forecasts by city name or coordinates.
- PayPal
— Typed PayPal client for Orders v2: create, fetch, capture and refund, with automatic OAuth2 tokens, idempotency keys and webhook verification.
- Polymarket
— Typed Polymarket client: Gamma market discovery, CLOB trading with secp256k1/EIP-712 order signing, portfolio positions and value, gasless split/merge/redeem, and real-time WebSocket feeds for order books, trades, your orders and reference prices.
- Pyth
— Typed Pyth Pro (Pyth Lazer) price stream for Deno, Bun, Node.js, browsers and Cloudflare Workers: all redundant WebSocket endpoints at once, merged into one validated stream with per-endpoint health and gap detection.
- Razorpay
— Typed Razorpay client: create and fetch orders; capture, fetch and list payments; create payment links; and verify webhook signatures.
- Resend
— Typed Resend client: send single and batch transactional email with idempotency keys, retrieve delivery status, reschedule or cancel scheduled email, and verify Svix-signed webhooks.
- S3
— Typed S3 client with SigV4 signing for AWS S3, Cloudflare R2, MinIO and DigitalOcean Spaces: object CRUD and listing, plus streamed multipart uploads and downloads.
- SendGrid
— Typed Twilio SendGrid client: send transactional email, inspect API-key scopes, and verify ECDSA-signed event webhooks.
- Sentry
— Typed Sentry API client: list projects; list, fetch and update issues; read issue events; and create releases.
- Slack
— Typed Slack Web API client: post, update and delete messages, list channels and read history, look up users, and verify request signatures.
- Stripe
— Typed Stripe client: create and retrieve PaymentIntents and create customers, with idempotency keys and webhook signature verification.
- Telegram
— Typed Telegram Bot API client for webhook bots: send, edit and delete messages with inline keyboards, answer callback queries, manage the webhook and command menu, and verify and parse webhook updates and commands.
- Twilio
— Typed Twilio client: send SMS/MMS; place, list, update and delete voice calls; and verify webhook signatures.
- UpstashRedis
— Typed Upstash Redis REST client: string, hash and list commands, TTLs, counters and pipelining over plain HTTPS — no TCP connection needed.
- URLhaus
— Typed URLhaus (abuse.ch) client: look up URLs, hosts and payloads in the malware-URL database, with not-listed results instead of errors and a hard per-call deadline.
Each connect's README is its main documentation. The API, error and schema guides for every connect live in the wiki.
🔎 Looking for a familiar SDK?
Each connect covers a focused subset of its vendor's API with no Node-only dependencies. Check the connect's README for exactly which endpoints.
| If you use… | Reach for |
|---|---|
stripe |
@tundraconnect/stripe |
@aws-sdk/client-s3 (also for R2, MinIO, Spaces) |
@tundraconnect/s3 |
@google-cloud/storage |
@tundraconnect/gcs |
@google-cloud/web-risk, for URL lookups |
@tundraconnect/google-web-risk |
@google-cloud/certificate-manager |
@tundraconnect/google-certificate-manager |
@azure/storage-blob |
@tundraconnect/azure-blob |
@slack/web-api |
@tundraconnect/slack |
discord.js, for webhook and bot messages |
@tundraconnect/discord |
twilio |
@tundraconnect/twilio |
@sendgrid/mail |
@tundraconnect/sendgrid |
razorpay |
@tundraconnect/razorpay |
algoliasearch |
@tundraconnect/algolia |
@upstash/redis |
@tundraconnect/upstash-redis |
@polymarket/clob-client |
@tundraconnect/polymarket |
cloudflare, for DNS records |
@tundraconnect/cloudflare-dns |
cloudflare, for custom hostnames |
@tundraconnect/cloudflare-saas |
cloudflare, for Turnstile siteverify |
@tundraconnect/cloudflare-turnstile |
🚀 Quick start
deno add jsr:@tundraconnect/openexchange
import { OpenExchange } from '@tundraconnect/openexchange';
const client = new OpenExchange({
auth: { type: 'CUSTOM', appId: 'your-app-id' },
});
const rates = await client.getRates();
🤝 Community & support
📄 License
MIT License — see LICENSE for details.