SDK Node.js dla Polski
@corp-merch/sdk — TypeScript-first, zero zależności, działa na Node 18+, Bun, Deno, Vercel i AWS Lambda.
Instalacja i init
npm install @corp-merch/sdk. Inicjalizacja: const cm = new CorpMerch({ apiKey: process.env.CM_KEY, country: 'PL', env: 'production' }). Klient autoload VAT 23% i kieruje faktury przez KSeF; hub Warszawa domyślnie.
Quickstart — złóż zamówienie
const order = await cm.orders.create({ idempotencyKey: crypto.randomUUID(), buyer: { vatId: 'PL…' }, lines: [{ sku: 'TSH-001', qty: 200 }], promisedDate: '2026-07-01' }); console.log(order.id, order.estimatedVatAmountCents). Zwraca Order typowany z discriminated-union status. Błędy rzucane jako ValidationError / RateLimitError itd.
Weryfikacja webhook
W trasie Express/Fastify: const event = cm.webhooks.constructEvent(rawBody, req.headers['x-corp-signature'], process.env.CM_WEBHOOK_SECRET); switch (event.type) { case 'invoice.issued': … }. Rzuca SignatureVerificationError przy mismatch lub starym timestampie (>5 min).
FAQ
ESM czy CommonJS?
Oba — dual package. ESM preferowany (.mjs + .d.ts), CommonJS via require() działa via package.json exports.
Czy działa z Bun i Deno?
Tak — testowane w CI na Bun 1.x i Deno 1.x z tą samą test suite co Node. Użyj npm: specifier w Deno lub po prostu import w Bun.
Jak skonfigurować retry?
Domyślnie 3 retry na 5xx, 429 i błędach sieci z backoffem. Override via new CorpMerch({ retries: 5, retryBackoffMs: 200 }).
Czy jest metoda catalog streaming?
Tak — cm.catalog.list({ country: 'PL' }) zwraca AsyncIterator; for await (const item of …) iteruje wszystkie strony automatycznie.
Czy źródło jest dostępne?
MIT na GitHub: github.com/corp-merch/sdk-js. PR-y mile widziane; CLA wymagane dla nietrywialnych wkładów.