Thanks for taking the time to contribute. This SDK is small and the bar for changes is high — we optimise for stability and ergonomics over new features.
Requirements:
- Node.js
>= 20 pnpm(use the version pinned inpackageManager)
git clone https://github.com/pdfmonkey/pdfmonkey-node.git
cd pdfmonkey-node
pnpm install| Script | Purpose |
|---|---|
pnpm test |
Run the Vitest suite |
pnpm test:watch |
Vitest in watch mode |
pnpm lint |
Biome lint + format check |
pnpm lint:fix |
Biome auto-fix |
pnpm typecheck |
tsc --noEmit |
pnpm build |
Build ESM + CJS bundles via tsup |
pnpm attw |
Are The Types Wrong type-resolution check |
pnpm publint |
Lint the published package shape |
- Fork the repo and create a feature branch.
- Add a Changeset for any user-visible change:
pnpm changeset
- Make sure
pnpm lint,pnpm typecheck,pnpm test, andpnpm buildall pass locally. - Open the PR against
main. CI runs the same checks across Node 20/22/24 plus macOS and Windows.
- Follow Biome's recommended rules; run
pnpm lint:fixbefore pushing. - Public API additions need TSDoc and a test.
- Keep runtime dependencies at zero — the SDK relies on the platform's
fetchand Web Crypto only. - Resource methods are thin wrappers around
client.get/post/.... Do not introduce ad-hoc HTTP code paths.
Open a GitHub issue with reproduction steps, expected vs. actual
behaviour, the SDK version, and the Node version. For security
vulnerabilities, see SECURITY.md.