A TypeScript library for writing Sim IDX apps.
npm install @duneanalytics/sim-idx
# or
yarn add @duneanalytics/sim-idx
# or
pnpm add @duneanalytics/sim-idx
import { 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 toproduction
for production environments.
# Install dependencies
pnpm install
# Run tests
pnpm test
# Build the library
pnpm build
# Lint code
pnpm lint
# Format code
pnpm fix:prettier
If you have the power to deploy, you can run the following commands to deploy the package to the npm registry:
main
branch
- Tag a new version of the package:
npm version <patch|minor|major>
- Push the tag to the remote repository:
git push --tags
- Publish the package to the npm registry:
npm publish
- 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.