cosmos-fetch
v0.0.11
Published
A fetch wrapper for cosmos blockchains
Downloads
74
Readme
cosmos-fetch
An advanced fetch for cosmos blockchains. Support cosmos-registry
caching, retries, and more.
Features
- Chain Registry: supports chain registry for chain configurations.
- Node Latency: supports node latency for selecting the fastest node.
- Caching: supports multiple cache drivers like
fs
,memory
,cloudflare-kv
,cloudflare-kv-http
,cloudflare-r2
,http
,lru-cache
,localstorage
, andsessionstorage
. - Retries: supports retries on failed requests.
- Retry Delay: supports retry delay on failed requests.
- Timeout: supports timeout on requests.
- ... and more
Usage
Install package:
# ✨ Auto-detect
npx nypm install cosmos-fetch
# npm
npm install cosmos-fetch
# yarn
yarn add cosmos-fetch
# pnpm
pnpm install cosmos-fetch
# bun
bun install cosmos-fetch
# deno
deno install cosmos-fetch
Import:
ESM (Node.js, Bun, Deno)
import { cfetch } from "cosmos-fetch";
CommonJS (Legacy Node.js)
const { cfetch } = require("cosmos-fetch");
CDN (Deno, Bun and Browsers)
import { cfetch } from "https://esm.sh/cosmos-fetch";
Examples
Without caching
import { cfetch } from "cosmos-fetch";
// Fetch staking params from cosmoshub
const response = await cfetch("/cosmos/staking/v1beta1/params");
// Fetch staking params from bitsong
const response = await cfetch("/cosmos/staking/v1beta1/params", {
chain: "bitsong",
});
With caching (highly recommended)
import { cfetch, createStorage } from "cosmos-fetch";
import { fsDriver } from "cosmos-fetch/drivers";
// Use local filesystem as cache
const cache = createStorage({ driver: fsDriver({ base: "./.cache" }) });
// Memory
// import { memoryDriver } from "cosmos-fetch/drivers";
// const cache = createStorage({ driver: memoryDriver() });
// CloudFlare KV (binding)
// import { cloudflareKVBindingDriver } from "cosmos-fetch/drivers";
// const cache = createStorage({ driver: cloudflareKVBindingDriver({ binding: "STORAGE" }) });
// Cloudflare KV (http)
// import { cloudflareKVHTTPDriver } from "cosmos-fetch/drivers";
// const cache = createStorage({ driver: cloudflareKVHTTPDriver({
// accountId: "my-account-id",
// namespaceId: "my-kv-namespace-id",
// apiToken: "supersecret-api-token",
// }) });
// CloudFlare R2 (binding)
// import { cloudflareR2BindingDriver } from "cosmos-fetch/drivers";
// const cache = createStorage({ driver: cloudflareR2BindingDriver({ binding: "STORAGE" }) });
// HTTP Driver
// import { httpDriver } from "cosmos-fetch/drivers";
// const cache = createStorage({ driver: httpDriver({ base: "https://my-cache-server.com" }) });
// LRUCache
// import { lruCacheDriver } from "cosmos-fetch/drivers";
// const cache = createStorage({ driver: lruCacheDriver({ max: 1000 }) });
// Browser LocalStorage
// import { localStorageDriver } from "cosmos-fetch/drivers";
// const cache = createStorage({ driver: localStorageDriver({ base: "app:" }) });
// Browser SessionStorage
// import { sessionStorageDriver } from "cosmos-fetch/drivers";
// const cache = createStorage({ driver: sessionStorageDriver({ base: "app:" }) });
// Fetch staking params from cosmoshub
const response = await cfetch("/cosmos/staking/v1beta1/params", {
chain: "bitsong",
cache,
});
Development
- Clone this repository
- Install latest LTS version of Node.js
- Enable Corepack using
corepack enable
- Install dependencies using
pnpm install
- Run interactive tests using
pnpm dev
- Run playground using
pnpm play
License
Published under the MIT license. Made by community 💛
🤖 auto updated with automd