This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
npm run build # Build both CJS and ESM outputs via tsdown
npm run typecheck # Run TypeScript type checkingThere are no test or lint scripts configured.
This is a shared TypeScript library (@stagetimerio/billing) for Paddle payment platform integration, published to GitHub Packages. It provides dual CJS/ESM exports.
@stagetimerio/billing/types- TypeScript types for Paddle entities@stagetimerio/billing/utils- Utility functions for billing calculations
types/- Paddle API type definitions (Product, Price, Transaction, Subscription, Event)utils/- Billing utilities, primarilygetLimits()for calculating plan limits
Product Types (ProductType enum):
BASE- Base subscription plan with configurable limits (rooms, seats, licenses, devices, timers, messages)SEAT- Additional seats add-onLICENSE- Desktop app lifetime licenseDEVICES- Device pack add-on with configurableamount(step size)
getLimits() function: Calculates aggregate plan limits from subscription/transaction items by:
- Setting defaults (3 for rooms/devices/timers/messages)
- Iterating items and applying product-type-specific logic
- BASE products set limits from custom_data; SEAT/LICENSE/DEVICES add to existing counts
- Single quotes, no semicolons
- 2-space indentation
- Space before function parens:
function foo ()notfunction foo() - Always trailing commas in multiline