A TypeScript library for writing Sim IDX apps.
npm install @duneanalytics/sim-idx
# or
yarn add @duneanalytics/sim-idx
# or
pnpm add @duneanalytics/sim-idximport { create } from '@duneanalytics/sim-idx';
interface Env {
CUSTOM_VAR: string;
}
const c = create<Env>();import { db } from '@duneanalytics/sim-idx';
// Get database client from Hono context
const client = db.client(context);import { address, bytes32, uint256, int256 } from '@duneanalytics/sim-idx';
import { Address, Bytes, Uint, Int } from '@duneanalytics/sim-idx';
// Address type
const walletAddress = address('wallet_address');
// Bytes types (1-32 bytes)
const hash = bytes32('transaction_hash');
const shortData = bytes16('short_data');
// Integer types
const balance = uint256('balance');
const signedValue = int256('signed_value');The library provides a middleware for authentication.
When a valid Sim IDX API key is submitted in the Authorization header (please see the documentation for authentication options),
your API will receive the API key name in the X-IDX-AUTHENTICATED-API-KEY-NAME header. The authentication middleware uses this header to decide if a request is authenticated or not.
import { App, middlewares } from '@duneanalytics/sim-idx';
const app = App.create();
app.use('*', middlewares.authentication);Note: In non-production environments, the authentication middleware will be disabled.
The library expects these environment variables:
DB_CONNECTION_STRING: Your database connection stringNODE_ENV: Set toproductionfor production environments.
# Install dependencies
pnpm install
# Run tests
pnpm test
# Build the library
pnpm build
# Lint code
pnpm lint
# Format code
pnpm fix:prettier-
First, update
package.jsonwith the next version number (and merge that) -
Then, create a new tag in the format of
v*.*.*(check https://github.com/duneanalytics/sim-idx-ts/tags for the latest tag) and increase it accordingly.Creating a new tag will run a Github action that will build & publish the library to npm.
-
Create a new release on GitHub with the same version number.
This project is licensed under the MIT License - see the LICENSE file for details.