@mesadev/sdk
v0.34.0
Published
Official Mesa TypeScript SDK
Keywords
Readme
@mesadev/sdk
Official Mesa TypeScript SDK.
This is the primary TypeScript SDK for Mesa. It includes ergonomic REST resources with default org inference.
Node.js runtime is required.
Install
bun add @mesadev/sdkUsage
import { Mesa } from '@mesadev/sdk';
const mesa = new Mesa({
apiKey: process.env.MESA_API_KEY,
});
// Uses org inferred from /whoami
const repo = await mesa.repos.create({ name: 'my-repo' });
// Optional constructor org bypasses /whoami default-org resolution
const mesaWithOrg = new Mesa({
apiKey: process.env.MESA_API_KEY,
org: 'acme',
});
await mesaWithOrg.repos.list();
// Per-call org override
await mesa.repos.list({ org: 'other-org' });
console.log(repo.name);This package exposes org-inferred REST resources under mesa.*.
Configuration
Mesa accepts:
apiKey?: string(falls back toMESA_API_KEYin Node)apiUrl?: string(defaults tohttps://api.mesa.dev/v1)org?: string(optional default org; bypasses/whoamiresolution)fetch?: typeof fetchuserAgent?: stringwebhookSecret?: string(used bymesa.webhooks.receive(...))
Webhook Handlers
Register typed handlers with mesa.webhooks.on(...) and pass the incoming
request to mesa.webhooks.receive(...). receive verifies the signature,
parses the payload, and dispatches any registered handlers.
import { Hono } from 'hono';
import { Mesa } from '@mesadev/sdk';
const mesa = new Mesa({
apiKey: process.env.MESA_API_KEY,
webhookSecret: process.env.MESA_WEBHOOK_SECRET,
});
mesa.webhooks.on('push', (event) => {
console.log('push:', event.data.updates[0]?.ref);
});
const app = new Hono();
app.post('/webhooks/mesa', async (c) => {
await mesa.webhooks.receive(c.req.raw);
return c.text('ok');
});Package Relationship
@mesadev/sdkis the ergonomic, main SDK.@mesadev/restis the generated REST package used under the hood.
Low-Level REST Access
Use @mesadev/rest directly, or call the API with your own HTTP client, when you need low-level REST access beyond the resource namespaces.
Migration Note
If you previously used the older generated @mesadev/sdk package:
- use
apiUrlinstead ofserverURL - rely on default org inference from
/whoamior passorgper call - use resource namespaces (
mesa.repos,mesa.changes, etc.); install@mesadev/restdirectly when you need generated REST operations
