Skip to main content

JavaScript API

ducto for TypeScript/JavaScript is published as @apoorwv/ducto on npm. Requires Node.js 18+.

Installation

npm install @apoorwv/ducto

# PostgreSQL store (optional)
npm install pg

# YAML pricing loading (optional)
npm install js-yaml

Core Classes

ClassDescription
PricingEnginePure calculation layer
CreditManagerOrchestrates credit lifecycle
MemoryStoreIn-memory store for testing
HttpxSupabaseStoreSupabase-backed store (native fetch)
PostgresStoreDirect PostgreSQL via pg
UsageMetricsInput interface for calculation
CostBreakdownStructured calculation result

Quick Example

import { CreditManager, MemoryStore } from "@apoorwv/ducto";

const store = new MemoryStore();
const manager = new CreditManager(store);

manager.publishPricingFromDict({
version: 1,
models: { "gpt-4": "input_tokens * (0.01 / 1000) + output_tokens * (0.03 / 1000)" },
});

await manager.addCredits("user_abc", 1000);
const result = await manager.deduct(
"user_abc",
{ model: "gpt-4", inputTokens: 500, outputTokens: 200 },
"idempotency-key-123",
);
console.log(`Deducted ${Math.abs(result.amount)} credits`);