@cynco/sdk 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -8
- package/dist/index.cjs +128 -78
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +320 -237
- package/dist/index.d.ts +320 -237
- package/dist/index.js +127 -79
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/errors.ts","../src/client.ts","../src/webhooks.ts","../src/pagination.ts","../src/resources/invoices.ts","../src/resources/customers.ts","../src/resources/vendors.ts","../src/resources/bills.ts","../src/resources/items.ts","../src/resources/accounts.ts","../src/resources/journal-entries.ts","../src/resources/bank-accounts.ts","../src/resources/reports.ts","../src/resources/webhooks.ts","../src/index.ts"],"names":["randomUUID","createHmac","timingSafeEqual"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { ValidationDetail, ResponseMeta } from './types.js';\n\n/**\n * Base error class for all Cynco API errors.\n *\n * Contains the HTTP status code, machine-readable error code, and optional\n * field-level validation details.\n */\nexport class CyncoError extends Error {\n /** Machine-readable error code from the API (e.g. \"validation_error\"). */\n readonly code: string;\n\n /** HTTP status code returned by the API. */\n readonly status: number;\n\n /** Unique request identifier for support troubleshooting. */\n readonly requestId: string;\n\n /** Field-level validation details, present on 422 responses. */\n readonly details?: ValidationDetail[];\n\n /** Raw response metadata from the API. */\n readonly meta?: ResponseMeta;\n\n constructor(\n message: string,\n options: {\n code: string;\n status: number;\n requestId: string;\n details?: ValidationDetail[];\n meta?: ResponseMeta;\n },\n ) {\n super(message);\n this.name = 'CyncoError';\n this.code = options.code;\n this.status = options.status;\n this.requestId = options.requestId;\n this.details = options.details;\n this.meta = options.meta;\n\n // Maintains proper stack trace in V8 engines\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n}\n\n/**\n * 401 Unauthorized — the API key is missing, invalid, or revoked.\n */\nexport class AuthenticationError extends CyncoError {\n constructor(\n message: string,\n options: {\n code: string;\n status: number;\n requestId: string;\n meta?: ResponseMeta;\n },\n ) {\n super(message, options);\n this.name = 'AuthenticationError';\n }\n}\n\n/**\n * 403 Forbidden — the API key lacks permission for this operation.\n */\nexport class PermissionError extends CyncoError {\n constructor(\n message: string,\n options: {\n code: string;\n status: number;\n requestId: string;\n meta?: ResponseMeta;\n },\n ) {\n super(message, options);\n this.name = 'PermissionError';\n }\n}\n\n/**\n * 404 Not Found — the requested resource does not exist.\n */\nexport class NotFoundError extends CyncoError {\n constructor(\n message: string,\n options: {\n code: string;\n status: number;\n requestId: string;\n meta?: ResponseMeta;\n },\n ) {\n super(message, options);\n this.name = 'NotFoundError';\n }\n}\n\n/**\n * 409 Conflict — the request conflicts with current server state\n * (e.g. duplicate idempotency key with different parameters).\n */\nexport class ConflictError extends CyncoError {\n constructor(\n message: string,\n options: {\n code: string;\n status: number;\n requestId: string;\n meta?: ResponseMeta;\n },\n ) {\n super(message, options);\n this.name = 'ConflictError';\n }\n}\n\n/**\n * 422 Unprocessable Entity — request body failed validation.\n */\nexport class ValidationError extends CyncoError {\n constructor(\n message: string,\n options: {\n code: string;\n status: number;\n requestId: string;\n details?: ValidationDetail[];\n meta?: ResponseMeta;\n },\n ) {\n super(message, options);\n this.name = 'ValidationError';\n }\n}\n\n/**\n * 429 Too Many Requests — you have exceeded the rate limit.\n *\n * The SDK automatically retries rate-limited requests with exponential backoff.\n * This error is thrown only after all retries are exhausted.\n */\nexport class RateLimitError extends CyncoError {\n /** Unix timestamp (seconds) when the rate limit resets. */\n readonly retryAfter: number;\n\n constructor(\n message: string,\n options: {\n code: string;\n status: number;\n requestId: string;\n retryAfter: number;\n meta?: ResponseMeta;\n },\n ) {\n super(message, options);\n this.name = 'RateLimitError';\n this.retryAfter = options.retryAfter;\n }\n}\n\n/**\n * 500+ Internal Server Error — something went wrong on the Cynco side.\n *\n * The SDK automatically retries server errors with exponential backoff.\n * This error is thrown only after all retries are exhausted.\n */\nexport class InternalError extends CyncoError {\n constructor(\n message: string,\n options: {\n code: string;\n status: number;\n requestId: string;\n meta?: ResponseMeta;\n },\n ) {\n super(message, options);\n this.name = 'InternalError';\n }\n}\n\n/**\n * Thrown when a request times out before completing.\n */\nexport class TimeoutError extends CyncoError {\n constructor(requestId: string, timeoutMs: number) {\n super(`Request timed out after ${timeoutMs}ms`, {\n code: 'timeout',\n status: 0,\n requestId,\n });\n this.name = 'TimeoutError';\n }\n}\n\n/**\n * Thrown when the network is unreachable or the connection was refused.\n */\nexport class ConnectionError extends CyncoError {\n constructor(requestId: string, cause: Error) {\n super(`Connection failed: ${cause.message}`, {\n code: 'connection_error',\n status: 0,\n requestId,\n });\n this.name = 'ConnectionError';\n this.cause = cause;\n }\n}\n","import { randomUUID } from 'node:crypto';\nimport type {\n CyncoClientOptions,\n CyncoResponse,\n PaginatedResponse,\n RequestOptions,\n ErrorResponse,\n RateLimitInfo,\n} from './types.js';\nimport {\n CyncoError,\n AuthenticationError,\n PermissionError,\n NotFoundError,\n ConflictError,\n ValidationError,\n RateLimitError,\n InternalError,\n TimeoutError,\n ConnectionError,\n} from './errors.js';\n\nconst DEFAULT_BASE_URL = 'https://app.cynco.io/api/v1';\nconst DEFAULT_TIMEOUT = 30_000;\nconst DEFAULT_MAX_RETRIES = 3;\n\nconst SDK_VERSION = '0.1.0';\nconst USER_AGENT = `cynco-node/${SDK_VERSION}`;\n\n/** HTTP methods that are safe to retry on transient failure. */\nconst RETRYABLE_METHODS = new Set(['GET', 'HEAD', 'OPTIONS', 'DELETE']);\n\n/** Status codes that trigger automatic retry. */\nconst RETRYABLE_STATUS_CODES = new Set([408, 429, 500, 502, 503, 504]);\n\n/**\n * Low-level HTTP client that handles authentication, retries, rate limiting,\n * and error mapping. Each Cynco instance has exactly one CyncoClient.\n */\nexport class CyncoClient {\n private readonly _apiKey: string;\n readonly baseUrl: string;\n private readonly _timeout: number;\n private readonly _maxRetries: number;\n private readonly _fetch: typeof globalThis.fetch;\n\n constructor(apiKey: string, options: CyncoClientOptions = {}) {\n if (!apiKey) {\n throw new Error(\n 'An API key is required. Pass it as the first argument: new Cynco(\"cak_...\")',\n );\n }\n\n if (!apiKey.startsWith('cak_')) {\n throw new Error(\n 'Invalid API key format. Cynco API keys start with \"cak_\".',\n );\n }\n\n this._apiKey = apiKey;\n this.baseUrl = (options.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/+$/, '');\n this._timeout = options.timeout ?? DEFAULT_TIMEOUT;\n this._maxRetries = options.maxRetries ?? DEFAULT_MAX_RETRIES;\n this._fetch = options.fetch ?? globalThis.fetch;\n }\n\n // ---------------------------------------------------------------------------\n // Public request methods\n // ---------------------------------------------------------------------------\n\n async get<T>(\n path: string,\n params?: Record<string, unknown>,\n options?: RequestOptions,\n ): Promise<CyncoResponse<T>> {\n const url = this._buildUrl(path, params);\n return this._request<CyncoResponse<T>>('GET', url, undefined, options);\n }\n\n async getList<T>(\n path: string,\n params?: Record<string, unknown>,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<T>> {\n const url = this._buildUrl(path, params);\n return this._request<PaginatedResponse<T>>('GET', url, undefined, options);\n }\n\n async post<T>(\n path: string,\n body?: unknown,\n options?: RequestOptions,\n ): Promise<CyncoResponse<T>> {\n const url = this._buildUrl(path);\n return this._request<CyncoResponse<T>>('POST', url, body, options);\n }\n\n async patch<T>(\n path: string,\n body?: unknown,\n options?: RequestOptions,\n ): Promise<CyncoResponse<T>> {\n const url = this._buildUrl(path);\n return this._request<CyncoResponse<T>>('PATCH', url, body, options);\n }\n\n async put<T>(\n path: string,\n body?: unknown,\n options?: RequestOptions,\n ): Promise<CyncoResponse<T>> {\n const url = this._buildUrl(path);\n return this._request<CyncoResponse<T>>('PUT', url, body, options);\n }\n\n async delete<T = void>(\n path: string,\n options?: RequestOptions,\n ): Promise<CyncoResponse<T>> {\n const url = this._buildUrl(path);\n return this._request<CyncoResponse<T>>('DELETE', url, undefined, options);\n }\n\n // ---------------------------------------------------------------------------\n // Internal\n // ---------------------------------------------------------------------------\n\n private _buildUrl(\n path: string,\n params?: Record<string, unknown>,\n ): string {\n const url = new URL(`${this.baseUrl}${path}`);\n\n if (params) {\n for (const [key, value] of Object.entries(params)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n\n return url.toString();\n }\n\n private async _request<T>(\n method: string,\n url: string,\n body: unknown | undefined,\n options?: RequestOptions,\n attempt = 0,\n ): Promise<T> {\n const requestId = randomUUID();\n\n const headers: Record<string, string> = {\n 'Authorization': `Bearer ${this._apiKey}`,\n 'User-Agent': USER_AGENT,\n 'Accept': 'application/json',\n 'X-Request-ID': requestId,\n ...options?.headers,\n };\n\n if (body !== undefined) {\n headers['Content-Type'] = 'application/json';\n }\n\n if (options?.idempotencyKey) {\n headers['Idempotency-Key'] = options.idempotencyKey;\n }\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this._timeout);\n\n // Combine user-provided signal with our timeout signal\n const signal = options?.signal\n ? anySignal([options.signal, controller.signal])\n : controller.signal;\n\n try {\n const response = await this._fetch(url, {\n method,\n headers,\n body: body !== undefined ? JSON.stringify(body) : undefined,\n signal,\n });\n\n clearTimeout(timeoutId);\n\n // Parse rate limit headers for all responses\n const rateLimitInfo = this._parseRateLimitHeaders(response.headers);\n\n // Successful response\n if (response.ok) {\n // 204 No Content\n if (response.status === 204) {\n return { success: true, data: undefined } as T;\n }\n\n const json = (await response.json()) as T;\n\n // Attach rate limit info to meta if present\n if (rateLimitInfo && typeof json === 'object' && json !== null) {\n const withMeta = json as Record<string, unknown>;\n withMeta['meta'] = {\n ...(withMeta['meta'] as Record<string, unknown> | undefined),\n requestId,\n rateLimit: rateLimitInfo,\n };\n }\n\n return json;\n }\n\n // Error response — check if retryable\n if (this._shouldRetry(method, response.status, attempt, options)) {\n const retryDelay = this._getRetryDelay(\n attempt,\n response.status,\n response.headers,\n );\n await sleep(retryDelay);\n return this._request<T>(method, url, body, options, attempt + 1);\n }\n\n // Non-retryable error — parse and throw\n const errorBody = await this._safeParseJson(response);\n throw this._buildError(response.status, errorBody, requestId, rateLimitInfo);\n } catch (error) {\n clearTimeout(timeoutId);\n\n // Re-throw our own errors\n if (error instanceof CyncoError) {\n throw error;\n }\n\n // Handle abort/timeout\n if (error instanceof DOMException && error.name === 'AbortError') {\n // Check if this was user cancellation vs our timeout\n if (options?.signal?.aborted) {\n throw new CyncoError('Request was cancelled', {\n code: 'cancelled',\n status: 0,\n requestId,\n });\n }\n throw new TimeoutError(requestId, this._timeout);\n }\n\n // Connection/network errors — retry if applicable\n if (this._shouldRetryOnNetworkError(method, attempt, options)) {\n const retryDelay = this._getRetryDelay(attempt, 0, undefined);\n await sleep(retryDelay);\n return this._request<T>(method, url, body, options, attempt + 1);\n }\n\n throw new ConnectionError(\n requestId,\n error instanceof Error ? error : new Error(String(error)),\n );\n }\n }\n\n private _shouldRetry(\n method: string,\n status: number,\n attempt: number,\n options?: RequestOptions,\n ): boolean {\n if (attempt >= this._maxRetries) return false;\n if (!RETRYABLE_STATUS_CODES.has(status)) return false;\n\n // Non-idempotent methods only retry if they have an idempotency key\n if (\n !RETRYABLE_METHODS.has(method) &&\n !options?.idempotencyKey\n ) {\n // Exception: 429 is always retryable (request was never processed)\n return status === 429;\n }\n\n return true;\n }\n\n private _shouldRetryOnNetworkError(\n method: string,\n attempt: number,\n options?: RequestOptions,\n ): boolean {\n if (attempt >= this._maxRetries) return false;\n return RETRYABLE_METHODS.has(method) || !!options?.idempotencyKey;\n }\n\n /**\n * Calculate retry delay with exponential backoff and jitter.\n * For 429 responses, uses Retry-After header if present.\n */\n private _getRetryDelay(\n attempt: number,\n status: number,\n headers: Headers | undefined,\n ): number {\n // Respect Retry-After header for rate limits\n if (status === 429 && headers) {\n const retryAfter = headers.get('Retry-After');\n if (retryAfter) {\n const seconds = parseInt(retryAfter, 10);\n if (!Number.isNaN(seconds)) {\n return seconds * 1000;\n }\n }\n }\n\n // Exponential backoff with jitter: base * 2^attempt + random jitter\n const baseDelay = 500; // 500ms\n const exponentialDelay = baseDelay * Math.pow(2, attempt);\n const jitter = Math.random() * baseDelay;\n return Math.min(exponentialDelay + jitter, 30_000); // cap at 30s\n }\n\n private _parseRateLimitHeaders(\n headers: Headers,\n ): RateLimitInfo | undefined {\n const limit = headers.get('X-RateLimit-Limit');\n const remaining = headers.get('X-RateLimit-Remaining');\n const reset = headers.get('X-RateLimit-Reset');\n\n if (!limit || !remaining || !reset) return undefined;\n\n return {\n limit: parseInt(limit, 10),\n remaining: parseInt(remaining, 10),\n reset: parseInt(reset, 10),\n };\n }\n\n private async _safeParseJson(\n response: Response,\n ): Promise<ErrorResponse | null> {\n try {\n return (await response.json()) as ErrorResponse;\n } catch {\n return null;\n }\n }\n\n private _buildError(\n status: number,\n body: ErrorResponse | null,\n requestId: string,\n rateLimitInfo?: RateLimitInfo,\n ): CyncoError {\n const code = body?.error?.code ?? 'unknown_error';\n const message =\n body?.error?.message ?? `Request failed with status ${status}`;\n const details = body?.error?.details;\n const meta = { ...body?.meta, requestId, rateLimit: rateLimitInfo };\n\n switch (status) {\n case 401:\n return new AuthenticationError(message, {\n code,\n status,\n requestId,\n meta,\n });\n case 403:\n return new PermissionError(message, {\n code,\n status,\n requestId,\n meta,\n });\n case 404:\n return new NotFoundError(message, {\n code,\n status,\n requestId,\n meta,\n });\n case 409:\n return new ConflictError(message, {\n code,\n status,\n requestId,\n meta,\n });\n case 422:\n return new ValidationError(message, {\n code,\n status,\n requestId,\n details,\n meta,\n });\n case 429:\n return new RateLimitError(message, {\n code,\n status,\n requestId,\n retryAfter: rateLimitInfo?.reset ?? 0,\n meta,\n });\n default:\n if (status >= 500) {\n return new InternalError(message, {\n code,\n status,\n requestId,\n meta,\n });\n }\n return new CyncoError(message, {\n code,\n status,\n requestId,\n details,\n meta,\n });\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Create an AbortSignal that triggers when ANY of the provided signals abort.\n */\nfunction anySignal(signals: AbortSignal[]): AbortSignal {\n const controller = new AbortController();\n\n for (const signal of signals) {\n if (signal.aborted) {\n controller.abort(signal.reason);\n return controller.signal;\n }\n signal.addEventListener(\n 'abort',\n () => controller.abort(signal.reason),\n { once: true },\n );\n }\n\n return controller.signal;\n}\n","import { createHmac, timingSafeEqual } from 'node:crypto';\n\n/** Maximum age in seconds for a webhook timestamp before it is rejected. */\nconst TIMESTAMP_TOLERANCE_SECONDS = 300; // 5 minutes\n\nexport interface WebhookVerifyOptions {\n /** Override the tolerance window in seconds. Defaults to 300 (5 minutes). */\n tolerance?: number;\n}\n\n/**\n * Utilities for verifying Cynco webhook signatures.\n *\n * All methods are static — no instantiation required.\n *\n * ```ts\n * import Cynco from 'cynco';\n *\n * const isValid = Cynco.webhooks.verify(\n * rawBody,\n * signature,\n * timestamp,\n * webhookSecret,\n * );\n * ```\n */\nexport const webhookVerifier = {\n /**\n * Verify a webhook signature.\n *\n * @param payload - The raw request body as a string.\n * @param signature - The value of the `X-Webhook-Signature` header.\n * @param timestamp - The value of the `X-Webhook-Timestamp` header.\n * @param secret - Your webhook signing secret.\n * @param options - Optional configuration.\n * @returns `true` if the signature is valid and the timestamp is within tolerance.\n */\n verify(\n payload: string,\n signature: string,\n timestamp: string,\n secret: string,\n options?: WebhookVerifyOptions,\n ): boolean {\n const tolerance =\n options?.tolerance ?? TIMESTAMP_TOLERANCE_SECONDS;\n\n // Validate timestamp freshness\n const ts = parseInt(timestamp, 10);\n if (Number.isNaN(ts)) {\n return false;\n }\n\n const now = Math.floor(Date.now() / 1000);\n if (Math.abs(now - ts) > tolerance) {\n return false;\n }\n\n // Compute expected signature: HMAC-SHA256(secret, timestamp.payload)\n const signedContent = `${timestamp}.${payload}`;\n const expectedSignature = createHmac('sha256', secret)\n .update(signedContent)\n .digest('hex');\n\n // Constant-time comparison\n const sigBuffer = Buffer.from(signature, 'utf8');\n const expectedBuffer = Buffer.from(expectedSignature, 'utf8');\n\n if (sigBuffer.length !== expectedBuffer.length) {\n return false;\n }\n\n return timingSafeEqual(sigBuffer, expectedBuffer);\n },\n\n /**\n * Verify a webhook signature, throwing an error if invalid.\n *\n * @throws {Error} If the signature is invalid or the timestamp is stale.\n */\n verifyOrThrow(\n payload: string,\n signature: string,\n timestamp: string,\n secret: string,\n options?: WebhookVerifyOptions,\n ): void {\n const tolerance =\n options?.tolerance ?? TIMESTAMP_TOLERANCE_SECONDS;\n\n const ts = parseInt(timestamp, 10);\n if (Number.isNaN(ts)) {\n throw new Error('Invalid webhook timestamp');\n }\n\n const now = Math.floor(Date.now() / 1000);\n if (Math.abs(now - ts) > tolerance) {\n throw new Error(\n `Webhook timestamp is too old (${Math.abs(now - ts)}s > ${tolerance}s tolerance)`,\n );\n }\n\n const signedContent = `${timestamp}.${payload}`;\n const expectedSignature = createHmac('sha256', secret)\n .update(signedContent)\n .digest('hex');\n\n const sigBuffer = Buffer.from(signature, 'utf8');\n const expectedBuffer = Buffer.from(expectedSignature, 'utf8');\n\n if (\n sigBuffer.length !== expectedBuffer.length ||\n !timingSafeEqual(sigBuffer, expectedBuffer)\n ) {\n throw new Error('Invalid webhook signature');\n }\n },\n\n /**\n * Generate a signature for testing purposes.\n *\n * @param payload - The request body.\n * @param secret - The webhook secret.\n * @param timestamp - Unix timestamp in seconds (defaults to now).\n * @returns An object with the signature and timestamp strings.\n */\n sign(\n payload: string,\n secret: string,\n timestamp?: number,\n ): { signature: string; timestamp: string } {\n const ts = timestamp ?? Math.floor(Date.now() / 1000);\n const signedContent = `${ts}.${payload}`;\n const signature = createHmac('sha256', secret)\n .update(signedContent)\n .digest('hex');\n\n return { signature, timestamp: String(ts) };\n },\n};\n","import type {\n ListParams,\n PaginatedResponse,\n CursorPaginatedResponse,\n} from './types.js';\n\n/**\n * A paginated list that doubles as an async iterator for auto-pagination.\n *\n * Standard usage (single page):\n * ```ts\n * const page = await cynco.invoices.list({ limit: 20 });\n * console.log(page.data); // Invoice[]\n * console.log(page.pagination); // { total, limit, offset, hasMore }\n * ```\n *\n * Auto-pagination (all pages):\n * ```ts\n * for await (const invoice of cynco.invoices.list({ limit: 50 })) {\n * console.log(invoice.id);\n * }\n * ```\n */\nexport class Page<T> implements AsyncIterable<T> {\n readonly data: T[];\n readonly pagination: PaginatedResponse<T>['pagination'];\n readonly links?: PaginatedResponse<T>['links'];\n readonly meta?: PaginatedResponse<T>['meta'];\n\n private readonly _fetchPage: (\n params: ListParams,\n ) => Promise<PaginatedResponse<T>>;\n private readonly _params: ListParams;\n\n constructor(\n response: PaginatedResponse<T>,\n fetchPage: (params: ListParams) => Promise<PaginatedResponse<T>>,\n params: ListParams,\n ) {\n this.data = response.data;\n this.pagination = response.pagination;\n this.links = response.links;\n this.meta = response.meta;\n this._fetchPage = fetchPage;\n this._params = params;\n }\n\n /** Whether there are more pages after this one. */\n get hasMore(): boolean {\n return this.pagination.hasMore;\n }\n\n /** Fetch the next page. Returns null if there are no more pages. */\n async nextPage(): Promise<Page<T> | null> {\n if (!this.hasMore) {\n return null;\n }\n\n const nextOffset = this.pagination.offset + this.pagination.limit;\n const nextParams: ListParams = {\n ...this._params,\n offset: nextOffset,\n };\n\n const response = await this._fetchPage(nextParams);\n return new Page(response, this._fetchPage, nextParams);\n }\n\n /** Iterate over all items across all pages. */\n async *[Symbol.asyncIterator](): AsyncIterator<T> {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let page: Page<T> | null = this;\n\n while (page) {\n for (const item of page.data) {\n yield item;\n }\n page = await page.nextPage();\n }\n }\n}\n\n/**\n * A cursor-based paginated list with async iteration support.\n */\nexport class CursorPage<T> implements AsyncIterable<T> {\n readonly data: T[];\n readonly pagination: CursorPaginatedResponse<T>['pagination'];\n readonly links?: CursorPaginatedResponse<T>['links'];\n readonly meta?: CursorPaginatedResponse<T>['meta'];\n\n private readonly _fetchPage: (\n params: ListParams,\n ) => Promise<CursorPaginatedResponse<T>>;\n private readonly _params: ListParams;\n\n constructor(\n response: CursorPaginatedResponse<T>,\n fetchPage: (params: ListParams) => Promise<CursorPaginatedResponse<T>>,\n params: ListParams,\n ) {\n this.data = response.data;\n this.pagination = response.pagination;\n this.links = response.links;\n this.meta = response.meta;\n this._fetchPage = fetchPage;\n this._params = params;\n }\n\n get hasMore(): boolean {\n return this.pagination.hasMore;\n }\n\n async nextPage(): Promise<CursorPage<T> | null> {\n if (!this.hasMore || !this.pagination.nextCursor) {\n return null;\n }\n\n const nextParams: ListParams = {\n ...this._params,\n cursor: this.pagination.nextCursor,\n };\n\n const response = await this._fetchPage(nextParams);\n return new CursorPage(response, this._fetchPage, nextParams);\n }\n\n async *[Symbol.asyncIterator](): AsyncIterator<T> {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let page: CursorPage<T> | null = this;\n\n while (page) {\n for (const item of page.data) {\n yield item;\n }\n page = await page.nextPage();\n }\n }\n}\n","import type { CyncoClient } from '../client.js';\nimport { Page } from '../pagination.js';\nimport type {\n Invoice,\n InvoiceListParams,\n InvoiceCreateInput,\n InvoiceUpdateInput,\n PaginatedResponse,\n RequestOptions,\n} from '../types.js';\n\nexport class Invoices {\n constructor(private readonly _client: CyncoClient) {}\n\n /**\n * List invoices with pagination.\n *\n * Returns a `Page` that can be used as an async iterator for auto-pagination:\n * ```ts\n * for await (const invoice of cynco.invoices.list({ limit: 50 })) {\n * console.log(invoice.id);\n * }\n * ```\n */\n async list(params?: InvoiceListParams): Promise<Page<Invoice>> {\n const fetchPage = async (\n p: InvoiceListParams,\n ): Promise<PaginatedResponse<Invoice>> => {\n return this._client.getList<Invoice>('/invoices', p as Record<string, unknown>);\n };\n\n const response = await fetchPage(params ?? {});\n return new Page(response, fetchPage, params ?? {});\n }\n\n /** Retrieve a single invoice by ID. */\n async retrieve(id: string): Promise<Invoice> {\n const response = await this._client.get<Invoice>(`/invoices/${id}`);\n return response.data;\n }\n\n /** Create a new invoice. */\n async create(\n data: InvoiceCreateInput,\n options?: RequestOptions,\n ): Promise<Invoice> {\n const response = await this._client.post<Invoice>(\n '/invoices',\n data,\n options,\n );\n return response.data;\n }\n\n /** Update an existing invoice. */\n async update(\n id: string,\n data: InvoiceUpdateInput,\n options?: RequestOptions,\n ): Promise<Invoice> {\n const response = await this._client.patch<Invoice>(\n `/invoices/${id}`,\n data,\n options,\n );\n return response.data;\n }\n\n /** Delete an invoice. Only draft invoices can be deleted. */\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this._client.delete(`/invoices/${id}`, options);\n }\n\n /** Send an invoice to the customer via email. */\n async send(id: string, options?: RequestOptions): Promise<Invoice> {\n const response = await this._client.post<Invoice>(\n `/invoices/${id}/send`,\n undefined,\n options,\n );\n return response.data;\n }\n\n /** Mark an invoice as paid. */\n async markPaid(\n id: string,\n data?: { paidDate?: string; paymentMethod?: string },\n options?: RequestOptions,\n ): Promise<Invoice> {\n const response = await this._client.post<Invoice>(\n `/invoices/${id}/mark-paid`,\n data,\n options,\n );\n return response.data;\n }\n\n /** Void an invoice. */\n async void(id: string, options?: RequestOptions): Promise<Invoice> {\n const response = await this._client.post<Invoice>(\n `/invoices/${id}/void`,\n undefined,\n options,\n );\n return response.data;\n }\n\n /** Get the PDF download URL for an invoice. */\n async getPdf(id: string): Promise<{ url: string }> {\n const response = await this._client.get<{ url: string }>(\n `/invoices/${id}/pdf`,\n );\n return response.data;\n }\n}\n","import type { CyncoClient } from '../client.js';\nimport { Page } from '../pagination.js';\nimport type {\n Customer,\n CustomerListParams,\n CustomerCreateInput,\n CustomerUpdateInput,\n PaginatedResponse,\n RequestOptions,\n} from '../types.js';\n\nexport class Customers {\n constructor(private readonly _client: CyncoClient) {}\n\n /**\n * List customers with pagination.\n *\n * ```ts\n * for await (const customer of cynco.customers.list({ limit: 50 })) {\n * console.log(customer.name);\n * }\n * ```\n */\n async list(params?: CustomerListParams): Promise<Page<Customer>> {\n const fetchPage = async (\n p: CustomerListParams,\n ): Promise<PaginatedResponse<Customer>> => {\n return this._client.getList<Customer>(\n '/customers',\n p as Record<string, unknown>,\n );\n };\n\n const response = await fetchPage(params ?? {});\n return new Page(response, fetchPage, params ?? {});\n }\n\n /** Retrieve a single customer by ID. */\n async retrieve(id: string): Promise<Customer> {\n const response = await this._client.get<Customer>(`/customers/${id}`);\n return response.data;\n }\n\n /** Create a new customer. */\n async create(\n data: CustomerCreateInput,\n options?: RequestOptions,\n ): Promise<Customer> {\n const response = await this._client.post<Customer>(\n '/customers',\n data,\n options,\n );\n return response.data;\n }\n\n /** Update an existing customer. */\n async update(\n id: string,\n data: CustomerUpdateInput,\n options?: RequestOptions,\n ): Promise<Customer> {\n const response = await this._client.patch<Customer>(\n `/customers/${id}`,\n data,\n options,\n );\n return response.data;\n }\n\n /** Delete a customer. Only customers with no associated records can be deleted. */\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this._client.delete(`/customers/${id}`, options);\n }\n}\n","import type { CyncoClient } from '../client.js';\nimport { Page } from '../pagination.js';\nimport type {\n Vendor,\n VendorListParams,\n VendorCreateInput,\n VendorUpdateInput,\n PaginatedResponse,\n RequestOptions,\n} from '../types.js';\n\nexport class Vendors {\n constructor(private readonly _client: CyncoClient) {}\n\n /**\n * List vendors with pagination.\n *\n * ```ts\n * for await (const vendor of cynco.vendors.list({ limit: 50 })) {\n * console.log(vendor.name);\n * }\n * ```\n */\n async list(params?: VendorListParams): Promise<Page<Vendor>> {\n const fetchPage = async (\n p: VendorListParams,\n ): Promise<PaginatedResponse<Vendor>> => {\n return this._client.getList<Vendor>(\n '/vendors',\n p as Record<string, unknown>,\n );\n };\n\n const response = await fetchPage(params ?? {});\n return new Page(response, fetchPage, params ?? {});\n }\n\n /** Retrieve a single vendor by ID. */\n async retrieve(id: string): Promise<Vendor> {\n const response = await this._client.get<Vendor>(`/vendors/${id}`);\n return response.data;\n }\n\n /** Create a new vendor. */\n async create(\n data: VendorCreateInput,\n options?: RequestOptions,\n ): Promise<Vendor> {\n const response = await this._client.post<Vendor>(\n '/vendors',\n data,\n options,\n );\n return response.data;\n }\n\n /** Update an existing vendor. */\n async update(\n id: string,\n data: VendorUpdateInput,\n options?: RequestOptions,\n ): Promise<Vendor> {\n const response = await this._client.patch<Vendor>(\n `/vendors/${id}`,\n data,\n options,\n );\n return response.data;\n }\n\n /** Delete a vendor. Only vendors with no associated records can be deleted. */\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this._client.delete(`/vendors/${id}`, options);\n }\n}\n","import type { CyncoClient } from '../client.js';\nimport { Page } from '../pagination.js';\nimport type {\n Bill,\n BillListParams,\n BillCreateInput,\n BillUpdateInput,\n PaginatedResponse,\n RequestOptions,\n} from '../types.js';\n\nexport class Bills {\n constructor(private readonly _client: CyncoClient) {}\n\n /**\n * List bills with pagination.\n *\n * ```ts\n * for await (const bill of cynco.bills.list({ limit: 50 })) {\n * console.log(bill.billNumber);\n * }\n * ```\n */\n async list(params?: BillListParams): Promise<Page<Bill>> {\n const fetchPage = async (\n p: BillListParams,\n ): Promise<PaginatedResponse<Bill>> => {\n return this._client.getList<Bill>(\n '/bills',\n p as Record<string, unknown>,\n );\n };\n\n const response = await fetchPage(params ?? {});\n return new Page(response, fetchPage, params ?? {});\n }\n\n /** Retrieve a single bill by ID. */\n async retrieve(id: string): Promise<Bill> {\n const response = await this._client.get<Bill>(`/bills/${id}`);\n return response.data;\n }\n\n /** Create a new bill. */\n async create(\n data: BillCreateInput,\n options?: RequestOptions,\n ): Promise<Bill> {\n const response = await this._client.post<Bill>('/bills', data, options);\n return response.data;\n }\n\n /** Update an existing bill. */\n async update(\n id: string,\n data: BillUpdateInput,\n options?: RequestOptions,\n ): Promise<Bill> {\n const response = await this._client.patch<Bill>(\n `/bills/${id}`,\n data,\n options,\n );\n return response.data;\n }\n\n /** Delete a bill. Only draft bills can be deleted. */\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this._client.delete(`/bills/${id}`, options);\n }\n\n /** Mark a bill as paid. */\n async markPaid(\n id: string,\n data?: { paidDate?: string; paymentMethod?: string },\n options?: RequestOptions,\n ): Promise<Bill> {\n const response = await this._client.post<Bill>(\n `/bills/${id}/mark-paid`,\n data,\n options,\n );\n return response.data;\n }\n\n /** Void a bill. */\n async void(id: string, options?: RequestOptions): Promise<Bill> {\n const response = await this._client.post<Bill>(\n `/bills/${id}/void`,\n undefined,\n options,\n );\n return response.data;\n }\n}\n","import type { CyncoClient } from '../client.js';\nimport { Page } from '../pagination.js';\nimport type {\n Item,\n ItemListParams,\n ItemCreateInput,\n ItemUpdateInput,\n PaginatedResponse,\n RequestOptions,\n} from '../types.js';\n\nexport class Items {\n constructor(private readonly _client: CyncoClient) {}\n\n /**\n * List items (products and services) with pagination.\n *\n * ```ts\n * for await (const item of cynco.items.list({ type: 'service' })) {\n * console.log(item.name);\n * }\n * ```\n */\n async list(params?: ItemListParams): Promise<Page<Item>> {\n const fetchPage = async (\n p: ItemListParams,\n ): Promise<PaginatedResponse<Item>> => {\n return this._client.getList<Item>(\n '/items',\n p as Record<string, unknown>,\n );\n };\n\n const response = await fetchPage(params ?? {});\n return new Page(response, fetchPage, params ?? {});\n }\n\n /** Retrieve a single item by ID. */\n async retrieve(id: string): Promise<Item> {\n const response = await this._client.get<Item>(`/items/${id}`);\n return response.data;\n }\n\n /** Create a new item. */\n async create(\n data: ItemCreateInput,\n options?: RequestOptions,\n ): Promise<Item> {\n const response = await this._client.post<Item>('/items', data, options);\n return response.data;\n }\n\n /** Update an existing item. */\n async update(\n id: string,\n data: ItemUpdateInput,\n options?: RequestOptions,\n ): Promise<Item> {\n const response = await this._client.patch<Item>(\n `/items/${id}`,\n data,\n options,\n );\n return response.data;\n }\n\n /** Delete an item. Items referenced by invoices or bills cannot be deleted. */\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this._client.delete(`/items/${id}`, options);\n }\n}\n","import type { CyncoClient } from '../client.js';\nimport { Page } from '../pagination.js';\nimport type {\n Account,\n AccountListParams,\n AccountCreateInput,\n AccountUpdateInput,\n PaginatedResponse,\n RequestOptions,\n} from '../types.js';\n\nexport class Accounts {\n constructor(private readonly _client: CyncoClient) {}\n\n /**\n * List chart of accounts with pagination.\n *\n * ```ts\n * for await (const account of cynco.accounts.list({ type: 'revenue' })) {\n * console.log(`${account.code} — ${account.name}`);\n * }\n * ```\n */\n async list(params?: AccountListParams): Promise<Page<Account>> {\n const fetchPage = async (\n p: AccountListParams,\n ): Promise<PaginatedResponse<Account>> => {\n return this._client.getList<Account>(\n '/accounts',\n p as Record<string, unknown>,\n );\n };\n\n const response = await fetchPage(params ?? {});\n return new Page(response, fetchPage, params ?? {});\n }\n\n /** Retrieve a single account by ID. */\n async retrieve(id: string): Promise<Account> {\n const response = await this._client.get<Account>(`/accounts/${id}`);\n return response.data;\n }\n\n /** Create a new account. */\n async create(\n data: AccountCreateInput,\n options?: RequestOptions,\n ): Promise<Account> {\n const response = await this._client.post<Account>(\n '/accounts',\n data,\n options,\n );\n return response.data;\n }\n\n /** Update an existing account. */\n async update(\n id: string,\n data: AccountUpdateInput,\n options?: RequestOptions,\n ): Promise<Account> {\n const response = await this._client.patch<Account>(\n `/accounts/${id}`,\n data,\n options,\n );\n return response.data;\n }\n\n /** Delete an account. Only unused accounts can be deleted. */\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this._client.delete(`/accounts/${id}`, options);\n }\n}\n","import type { CyncoClient } from '../client.js';\nimport { Page } from '../pagination.js';\nimport type {\n JournalEntry,\n JournalEntryListParams,\n JournalEntryCreateInput,\n JournalEntryUpdateInput,\n PaginatedResponse,\n RequestOptions,\n} from '../types.js';\n\nexport class JournalEntries {\n constructor(private readonly _client: CyncoClient) {}\n\n /**\n * List journal entries with pagination.\n *\n * ```ts\n * for await (const entry of cynco.journalEntries.list({ status: 'posted' })) {\n * console.log(entry.entryNumber);\n * }\n * ```\n */\n async list(params?: JournalEntryListParams): Promise<Page<JournalEntry>> {\n const fetchPage = async (\n p: JournalEntryListParams,\n ): Promise<PaginatedResponse<JournalEntry>> => {\n return this._client.getList<JournalEntry>(\n '/journal-entries',\n p as Record<string, unknown>,\n );\n };\n\n const response = await fetchPage(params ?? {});\n return new Page(response, fetchPage, params ?? {});\n }\n\n /** Retrieve a single journal entry by ID. */\n async retrieve(id: string): Promise<JournalEntry> {\n const response = await this._client.get<JournalEntry>(\n `/journal-entries/${id}`,\n );\n return response.data;\n }\n\n /** Create a new journal entry. */\n async create(\n data: JournalEntryCreateInput,\n options?: RequestOptions,\n ): Promise<JournalEntry> {\n const response = await this._client.post<JournalEntry>(\n '/journal-entries',\n data,\n options,\n );\n return response.data;\n }\n\n /** Update a draft journal entry. */\n async update(\n id: string,\n data: JournalEntryUpdateInput,\n options?: RequestOptions,\n ): Promise<JournalEntry> {\n const response = await this._client.patch<JournalEntry>(\n `/journal-entries/${id}`,\n data,\n options,\n );\n return response.data;\n }\n\n /** Delete a draft journal entry. */\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this._client.delete(`/journal-entries/${id}`, options);\n }\n\n /** Post a draft journal entry to the ledger. */\n async post(id: string, options?: RequestOptions): Promise<JournalEntry> {\n const response = await this._client.post<JournalEntry>(\n `/journal-entries/${id}/post`,\n undefined,\n options,\n );\n return response.data;\n }\n\n /** Void a posted journal entry. */\n async void(id: string, options?: RequestOptions): Promise<JournalEntry> {\n const response = await this._client.post<JournalEntry>(\n `/journal-entries/${id}/void`,\n undefined,\n options,\n );\n return response.data;\n }\n}\n","import type { CyncoClient } from '../client.js';\nimport { Page } from '../pagination.js';\nimport type {\n BankAccount,\n BankAccountListParams,\n BankAccountCreateInput,\n BankAccountUpdateInput,\n BankTransaction,\n BankTransactionListParams,\n PaginatedResponse,\n RequestOptions,\n} from '../types.js';\n\nexport class BankAccounts {\n constructor(private readonly _client: CyncoClient) {}\n\n /**\n * List bank accounts with pagination.\n *\n * ```ts\n * for await (const account of cynco.bankAccounts.list()) {\n * console.log(`${account.bankName} — ${account.name}`);\n * }\n * ```\n */\n async list(params?: BankAccountListParams): Promise<Page<BankAccount>> {\n const fetchPage = async (\n p: BankAccountListParams,\n ): Promise<PaginatedResponse<BankAccount>> => {\n return this._client.getList<BankAccount>(\n '/bank-accounts',\n p as Record<string, unknown>,\n );\n };\n\n const response = await fetchPage(params ?? {});\n return new Page(response, fetchPage, params ?? {});\n }\n\n /** Retrieve a single bank account by ID. */\n async retrieve(id: string): Promise<BankAccount> {\n const response = await this._client.get<BankAccount>(\n `/bank-accounts/${id}`,\n );\n return response.data;\n }\n\n /** Create a new bank account. */\n async create(\n data: BankAccountCreateInput,\n options?: RequestOptions,\n ): Promise<BankAccount> {\n const response = await this._client.post<BankAccount>(\n '/bank-accounts',\n data,\n options,\n );\n return response.data;\n }\n\n /** Update an existing bank account. */\n async update(\n id: string,\n data: BankAccountUpdateInput,\n options?: RequestOptions,\n ): Promise<BankAccount> {\n const response = await this._client.patch<BankAccount>(\n `/bank-accounts/${id}`,\n data,\n options,\n );\n return response.data;\n }\n\n /** Delete a bank account. */\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this._client.delete(`/bank-accounts/${id}`, options);\n }\n\n /**\n * List transactions for a specific bank account.\n *\n * ```ts\n * for await (const txn of cynco.bankAccounts.listTransactions('ba_123', { status: 'cleared' })) {\n * console.log(`${txn.date} ${txn.description} ${txn.amount}`);\n * }\n * ```\n */\n async listTransactions(\n bankAccountId: string,\n params?: BankTransactionListParams,\n ): Promise<Page<BankTransaction>> {\n const fetchPage = async (\n p: BankTransactionListParams,\n ): Promise<PaginatedResponse<BankTransaction>> => {\n return this._client.getList<BankTransaction>(\n `/bank-accounts/${bankAccountId}/transactions`,\n p as Record<string, unknown>,\n );\n };\n\n const response = await fetchPage(params ?? {});\n return new Page(response, fetchPage, params ?? {});\n }\n}\n","import type { CyncoClient } from '../client.js';\nimport type {\n ReportParams,\n BalanceSheetReport,\n ProfitAndLossReport,\n TrialBalanceReport,\n} from '../types.js';\n\nexport class Reports {\n constructor(private readonly _client: CyncoClient) {}\n\n /** Generate a balance sheet report. */\n async balanceSheet(\n params: Pick<ReportParams, 'endDate' | 'currency' | 'comparePrevious'>,\n ): Promise<BalanceSheetReport> {\n const response = await this._client.get<BalanceSheetReport>(\n '/reports/balance-sheet',\n { ...params } as unknown as Record<string, unknown>,\n );\n return response.data;\n }\n\n /** Generate a profit and loss (income statement) report. */\n async profitAndLoss(params: ReportParams): Promise<ProfitAndLossReport> {\n const response = await this._client.get<ProfitAndLossReport>(\n '/reports/profit-and-loss',\n { ...params } as unknown as Record<string, unknown>,\n );\n return response.data;\n }\n\n /** Generate a trial balance report. */\n async trialBalance(\n params: Pick<ReportParams, 'endDate' | 'currency'>,\n ): Promise<TrialBalanceReport> {\n const response = await this._client.get<TrialBalanceReport>(\n '/reports/trial-balance',\n { ...params } as unknown as Record<string, unknown>,\n );\n return response.data;\n }\n}\n","import type { CyncoClient } from '../client.js';\nimport { Page } from '../pagination.js';\nimport type {\n Webhook,\n WebhookListParams,\n WebhookCreateInput,\n WebhookUpdateInput,\n PaginatedResponse,\n RequestOptions,\n} from '../types.js';\n\nexport class Webhooks {\n constructor(private readonly _client: CyncoClient) {}\n\n /**\n * List webhook endpoints with pagination.\n *\n * ```ts\n * for await (const webhook of cynco.webhooks.list()) {\n * console.log(`${webhook.url} — ${webhook.events.join(', ')}`);\n * }\n * ```\n */\n async list(params?: WebhookListParams): Promise<Page<Webhook>> {\n const fetchPage = async (\n p: WebhookListParams,\n ): Promise<PaginatedResponse<Webhook>> => {\n return this._client.getList<Webhook>(\n '/webhooks',\n p as Record<string, unknown>,\n );\n };\n\n const response = await fetchPage(params ?? {});\n return new Page(response, fetchPage, params ?? {});\n }\n\n /** Retrieve a single webhook endpoint by ID. */\n async retrieve(id: string): Promise<Webhook> {\n const response = await this._client.get<Webhook>(`/webhooks/${id}`);\n return response.data;\n }\n\n /** Create a new webhook endpoint. */\n async create(\n data: WebhookCreateInput,\n options?: RequestOptions,\n ): Promise<Webhook> {\n const response = await this._client.post<Webhook>(\n '/webhooks',\n data,\n options,\n );\n return response.data;\n }\n\n /** Update an existing webhook endpoint. */\n async update(\n id: string,\n data: WebhookUpdateInput,\n options?: RequestOptions,\n ): Promise<Webhook> {\n const response = await this._client.patch<Webhook>(\n `/webhooks/${id}`,\n data,\n options,\n );\n return response.data;\n }\n\n /** Delete a webhook endpoint. */\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this._client.delete(`/webhooks/${id}`, options);\n }\n\n /** Rotate the signing secret for a webhook endpoint. Returns the new secret. */\n async rotateSecret(id: string): Promise<{ secret: string }> {\n const response = await this._client.post<{ secret: string }>(\n `/webhooks/${id}/rotate-secret`,\n );\n return response.data;\n }\n}\n","import { CyncoClient } from './client.js';\nimport { webhookVerifier } from './webhooks.js';\nimport { Invoices } from './resources/invoices.js';\nimport { Customers } from './resources/customers.js';\nimport { Vendors } from './resources/vendors.js';\nimport { Bills } from './resources/bills.js';\nimport { Items } from './resources/items.js';\nimport { Accounts } from './resources/accounts.js';\nimport { JournalEntries } from './resources/journal-entries.js';\nimport { BankAccounts } from './resources/bank-accounts.js';\nimport { Reports } from './resources/reports.js';\nimport { Webhooks } from './resources/webhooks.js';\nimport type { CyncoClientOptions } from './types.js';\n\n/**\n * The official Cynco TypeScript SDK.\n *\n * ```ts\n * import Cynco from 'cynco';\n *\n * const cynco = new Cynco('cak_your_api_key');\n *\n * const { data } = await cynco.invoices.list({ limit: 20 });\n * ```\n */\nclass Cynco {\n /** Invoices resource. */\n readonly invoices: Invoices;\n /** Customers resource. */\n readonly customers: Customers;\n /** Vendors resource. */\n readonly vendors: Vendors;\n /** Bills resource. */\n readonly bills: Bills;\n /** Items (products & services) resource. */\n readonly items: Items;\n /** Chart of accounts resource. */\n readonly accounts: Accounts;\n /** Journal entries resource. */\n readonly journalEntries: JournalEntries;\n /** Bank accounts resource. */\n readonly bankAccounts: BankAccounts;\n /** Financial reports resource. */\n readonly reports: Reports;\n /** Webhook endpoints resource. */\n readonly webhooks: Webhooks;\n\n /**\n * Static webhook signature verification utilities.\n *\n * ```ts\n * const valid = Cynco.webhooks.verify(payload, signature, timestamp, secret);\n * ```\n */\n static readonly webhooks = webhookVerifier;\n\n private readonly _client: CyncoClient;\n\n /**\n * Create a new Cynco client instance.\n *\n * @param apiKey - Your Cynco API key (starts with `cak_`).\n * @param options - Optional client configuration.\n */\n constructor(apiKey: string, options?: CyncoClientOptions) {\n this._client = new CyncoClient(apiKey, options);\n\n this.invoices = new Invoices(this._client);\n this.customers = new Customers(this._client);\n this.vendors = new Vendors(this._client);\n this.bills = new Bills(this._client);\n this.items = new Items(this._client);\n this.accounts = new Accounts(this._client);\n this.journalEntries = new JournalEntries(this._client);\n this.bankAccounts = new BankAccounts(this._client);\n this.reports = new Reports(this._client);\n this.webhooks = new Webhooks(this._client);\n }\n}\n\n// ---------------------------------------------------------------------------\n// Re-exports\n// ---------------------------------------------------------------------------\n\nexport default Cynco;\nexport { Cynco };\n\n// Client\nexport { CyncoClient } from './client.js';\n\n// Errors\nexport {\n CyncoError,\n AuthenticationError,\n PermissionError,\n NotFoundError,\n ConflictError,\n ValidationError,\n RateLimitError,\n InternalError,\n TimeoutError,\n ConnectionError,\n} from './errors.js';\n\n// Pagination\nexport { Page, CursorPage } from './pagination.js';\n\n// Webhooks\nexport { webhookVerifier } from './webhooks.js';\n\n// Resources\nexport { Invoices } from './resources/invoices.js';\nexport { Customers } from './resources/customers.js';\nexport { Vendors } from './resources/vendors.js';\nexport { Bills } from './resources/bills.js';\nexport { Items } from './resources/items.js';\nexport { Accounts } from './resources/accounts.js';\nexport { JournalEntries } from './resources/journal-entries.js';\nexport { BankAccounts } from './resources/bank-accounts.js';\nexport { Reports } from './resources/reports.js';\nexport { Webhooks } from './resources/webhooks.js';\n\n// Types — re-export everything from types.ts\nexport type {\n // Client config\n CyncoClientOptions,\n RequestOptions,\n // Response envelopes\n CyncoResponse,\n PaginatedResponse,\n CursorPaginatedResponse,\n OffsetPagination,\n CursorPagination,\n PaginationLinks,\n ResponseMeta,\n RateLimitInfo,\n ErrorResponse,\n ValidationDetail,\n // List params\n ListParams,\n InvoiceListParams,\n CustomerListParams,\n VendorListParams,\n BillListParams,\n ItemListParams,\n AccountListParams,\n JournalEntryListParams,\n BankAccountListParams,\n BankTransactionListParams,\n WebhookListParams,\n // Create / update inputs\n InvoiceCreateInput,\n InvoiceUpdateInput,\n InvoiceLineItemInput,\n CustomerCreateInput,\n CustomerUpdateInput,\n VendorCreateInput,\n VendorUpdateInput,\n BillCreateInput,\n BillUpdateInput,\n BillLineItemInput,\n ItemCreateInput,\n ItemUpdateInput,\n AccountCreateInput,\n AccountUpdateInput,\n JournalEntryCreateInput,\n JournalEntryUpdateInput,\n JournalEntryLineInput,\n BankAccountCreateInput,\n BankAccountUpdateInput,\n WebhookCreateInput,\n WebhookUpdateInput,\n // Resource types\n Invoice,\n InvoiceLineItem,\n InvoiceStatus,\n Customer,\n Vendor,\n Bill,\n BillLineItem,\n BillStatus,\n Item,\n Account,\n AccountType,\n JournalEntry,\n JournalEntryLine,\n BankAccount,\n BankTransaction,\n Webhook,\n WebhookEvent,\n WebhookPayload,\n // Reports\n ReportParams,\n BalanceSheetReport,\n ProfitAndLossReport,\n TrialBalanceReport,\n TrialBalanceRow,\n ReportSection,\n ReportRow,\n // Shared\n Address,\n BankDetails,\n} from './types.js';\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/client.ts","../src/webhooks.ts","../src/pagination.ts","../src/resources/invoices.ts","../src/resources/customers.ts","../src/resources/vendors.ts","../src/resources/bills.ts","../src/resources/items.ts","../src/resources/accounts.ts","../src/resources/journal-entries.ts","../src/resources/bank-accounts.ts","../src/resources/reports.ts","../src/resources/webhooks.ts","../src/index.ts"],"names":["randomUUID","createHmac","timingSafeEqual"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { ValidationDetail, ResponseMeta } from './types.js';\n\n/**\n * Base error class for all Cynco API errors.\n *\n * Contains the HTTP status code, machine-readable error code, and optional\n * field-level validation details.\n */\nexport class CyncoError extends Error {\n /** Machine-readable error code from the API (e.g. \"validation_error\"). */\n readonly code: string;\n\n /** HTTP status code returned by the API. */\n readonly status: number;\n\n /** Unique request identifier for support troubleshooting. */\n readonly requestId: string;\n\n /** Field-level validation details, present on 422 responses. */\n readonly details?: ValidationDetail[];\n\n /** Raw response metadata from the API. */\n readonly meta?: ResponseMeta;\n\n constructor(\n message: string,\n options: {\n code: string;\n status: number;\n requestId: string;\n details?: ValidationDetail[];\n meta?: ResponseMeta;\n },\n ) {\n super(message);\n this.name = 'CyncoError';\n this.code = options.code;\n this.status = options.status;\n this.requestId = options.requestId;\n this.details = options.details;\n this.meta = options.meta;\n\n // Maintains proper stack trace in V8 engines\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n}\n\n/**\n * 401 Unauthorized — the API key is missing, invalid, or revoked.\n */\nexport class AuthenticationError extends CyncoError {\n constructor(\n message: string,\n options: {\n code: string;\n status: number;\n requestId: string;\n meta?: ResponseMeta;\n },\n ) {\n super(message, options);\n this.name = 'AuthenticationError';\n }\n}\n\n/**\n * 403 Forbidden — the API key lacks permission for this operation.\n */\nexport class PermissionError extends CyncoError {\n constructor(\n message: string,\n options: {\n code: string;\n status: number;\n requestId: string;\n meta?: ResponseMeta;\n },\n ) {\n super(message, options);\n this.name = 'PermissionError';\n }\n}\n\n/**\n * 404 Not Found — the requested resource does not exist.\n */\nexport class NotFoundError extends CyncoError {\n constructor(\n message: string,\n options: {\n code: string;\n status: number;\n requestId: string;\n meta?: ResponseMeta;\n },\n ) {\n super(message, options);\n this.name = 'NotFoundError';\n }\n}\n\n/**\n * 409 Conflict — the request conflicts with current server state\n * (e.g. duplicate idempotency key with different parameters).\n */\nexport class ConflictError extends CyncoError {\n constructor(\n message: string,\n options: {\n code: string;\n status: number;\n requestId: string;\n meta?: ResponseMeta;\n },\n ) {\n super(message, options);\n this.name = 'ConflictError';\n }\n}\n\n/**\n * 422 Unprocessable Entity — request body failed validation.\n */\nexport class ValidationError extends CyncoError {\n constructor(\n message: string,\n options: {\n code: string;\n status: number;\n requestId: string;\n details?: ValidationDetail[];\n meta?: ResponseMeta;\n },\n ) {\n super(message, options);\n this.name = 'ValidationError';\n }\n}\n\n/**\n * 429 Too Many Requests — you have exceeded the rate limit.\n *\n * The SDK automatically retries rate-limited requests with exponential backoff.\n * This error is thrown only after all retries are exhausted.\n */\nexport class RateLimitError extends CyncoError {\n /** Unix timestamp (seconds) when the rate limit resets. */\n readonly retryAfter: number;\n\n constructor(\n message: string,\n options: {\n code: string;\n status: number;\n requestId: string;\n retryAfter: number;\n meta?: ResponseMeta;\n },\n ) {\n super(message, options);\n this.name = 'RateLimitError';\n this.retryAfter = options.retryAfter;\n }\n}\n\n/**\n * 500+ Internal Server Error — something went wrong on the Cynco side.\n *\n * The SDK automatically retries server errors with exponential backoff.\n * This error is thrown only after all retries are exhausted.\n */\nexport class InternalError extends CyncoError {\n constructor(\n message: string,\n options: {\n code: string;\n status: number;\n requestId: string;\n meta?: ResponseMeta;\n },\n ) {\n super(message, options);\n this.name = 'InternalError';\n }\n}\n\n/**\n * Thrown when a request times out before completing.\n */\nexport class TimeoutError extends CyncoError {\n constructor(requestId: string, timeoutMs: number) {\n super(`Request timed out after ${timeoutMs}ms`, {\n code: 'timeout',\n status: 0,\n requestId,\n });\n this.name = 'TimeoutError';\n }\n}\n\n/**\n * Thrown when the network is unreachable or the connection was refused.\n */\nexport class ConnectionError extends CyncoError {\n constructor(requestId: string, cause: Error) {\n super(`Connection failed: ${cause.message}`, {\n code: 'connection_error',\n status: 0,\n requestId,\n });\n this.name = 'ConnectionError';\n this.cause = cause;\n }\n}\n","import { randomUUID } from 'node:crypto';\nimport type {\n CyncoClientOptions,\n CyncoResponse,\n PaginatedResponse,\n RequestOptions,\n ErrorResponse,\n RateLimitInfo,\n} from './types.js';\nimport {\n CyncoError,\n AuthenticationError,\n PermissionError,\n NotFoundError,\n ConflictError,\n ValidationError,\n RateLimitError,\n InternalError,\n TimeoutError,\n ConnectionError,\n} from './errors.js';\n\nconst DEFAULT_BASE_URL = 'https://app.cynco.io/api/v1';\nconst DEFAULT_TIMEOUT = 30_000;\nconst DEFAULT_MAX_RETRIES = 3;\n\nconst SDK_VERSION = '0.1.0';\nconst USER_AGENT = `cynco-node/${SDK_VERSION}`;\n\n/** HTTP methods that are safe to retry on transient failure. */\nconst RETRYABLE_METHODS = new Set(['GET', 'HEAD', 'OPTIONS', 'DELETE']);\n\n/** Status codes that trigger automatic retry. */\nconst RETRYABLE_STATUS_CODES = new Set([408, 429, 500, 502, 503, 504]);\n\n/**\n * Low-level HTTP client that handles authentication, retries, rate limiting,\n * and error mapping. Each Cynco instance has exactly one CyncoClient.\n */\nexport class CyncoClient {\n private readonly _apiKey: string;\n readonly baseUrl: string;\n private readonly _timeout: number;\n private readonly _maxRetries: number;\n private readonly _fetch: typeof globalThis.fetch;\n\n constructor(apiKey: string, options: CyncoClientOptions = {}) {\n if (!apiKey) {\n throw new Error(\n 'An API key is required. Pass it as the first argument: new Cynco(\"cak_...\")',\n );\n }\n\n if (!apiKey.startsWith('cak_')) {\n throw new Error(\n 'Invalid API key format. Cynco API keys start with \"cak_\".',\n );\n }\n\n this._apiKey = apiKey;\n this.baseUrl = (options.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/+$/, '');\n this._timeout = options.timeout ?? DEFAULT_TIMEOUT;\n this._maxRetries = options.maxRetries ?? DEFAULT_MAX_RETRIES;\n this._fetch = options.fetch ?? globalThis.fetch;\n }\n\n // ---------------------------------------------------------------------------\n // Public request methods\n // ---------------------------------------------------------------------------\n\n async get<T>(\n path: string,\n params?: Record<string, unknown>,\n options?: RequestOptions,\n ): Promise<CyncoResponse<T>> {\n const url = this._buildUrl(path, params);\n return this._request<CyncoResponse<T>>('GET', url, undefined, options);\n }\n\n async getList<T>(\n path: string,\n params?: Record<string, unknown>,\n options?: RequestOptions,\n ): Promise<PaginatedResponse<T>> {\n const url = this._buildUrl(path, params);\n return this._request<PaginatedResponse<T>>('GET', url, undefined, options);\n }\n\n async post<T>(\n path: string,\n body?: unknown,\n options?: RequestOptions,\n ): Promise<CyncoResponse<T>> {\n const url = this._buildUrl(path);\n return this._request<CyncoResponse<T>>('POST', url, body, options);\n }\n\n async patch<T>(\n path: string,\n body?: unknown,\n options?: RequestOptions,\n ): Promise<CyncoResponse<T>> {\n const url = this._buildUrl(path);\n return this._request<CyncoResponse<T>>('PATCH', url, body, options);\n }\n\n async put<T>(\n path: string,\n body?: unknown,\n options?: RequestOptions,\n ): Promise<CyncoResponse<T>> {\n const url = this._buildUrl(path);\n return this._request<CyncoResponse<T>>('PUT', url, body, options);\n }\n\n async delete<T = void>(\n path: string,\n options?: RequestOptions,\n ): Promise<CyncoResponse<T>> {\n const url = this._buildUrl(path);\n return this._request<CyncoResponse<T>>('DELETE', url, undefined, options);\n }\n\n // ---------------------------------------------------------------------------\n // Internal\n // ---------------------------------------------------------------------------\n\n private _buildUrl(\n path: string,\n params?: Record<string, unknown>,\n ): string {\n const url = new URL(`${this.baseUrl}${path}`);\n\n if (params) {\n for (const [key, value] of Object.entries(params)) {\n if (value !== undefined && value !== null) {\n url.searchParams.set(key, String(value));\n }\n }\n }\n\n return url.toString();\n }\n\n private async _request<T>(\n method: string,\n url: string,\n body: unknown | undefined,\n options?: RequestOptions,\n attempt = 0,\n ): Promise<T> {\n const requestId = randomUUID();\n\n const headers: Record<string, string> = {\n 'Authorization': `Bearer ${this._apiKey}`,\n 'User-Agent': USER_AGENT,\n 'Accept': 'application/json',\n 'X-Request-ID': requestId,\n ...options?.headers,\n };\n\n if (body !== undefined) {\n headers['Content-Type'] = 'application/json';\n }\n\n if (options?.idempotencyKey) {\n headers['Idempotency-Key'] = options.idempotencyKey;\n }\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this._timeout);\n\n // Combine user-provided signal with our timeout signal\n const signal = options?.signal\n ? anySignal([options.signal, controller.signal])\n : controller.signal;\n\n try {\n const response = await this._fetch(url, {\n method,\n headers,\n body: body !== undefined ? JSON.stringify(body) : undefined,\n signal,\n });\n\n clearTimeout(timeoutId);\n\n // Parse rate limit headers for all responses\n const rateLimitInfo = this._parseRateLimitHeaders(response.headers);\n\n // Successful response\n if (response.ok) {\n // 204 No Content\n if (response.status === 204) {\n return { success: true, data: undefined } as T;\n }\n\n const json = (await response.json()) as Record<string, unknown>;\n\n // Ensure success field is always present on success responses\n json['success'] = true;\n\n // Attach rate limit info to meta if present\n if (rateLimitInfo) {\n json['meta'] = {\n ...(json['meta'] as Record<string, unknown> | undefined),\n requestId,\n rateLimit: rateLimitInfo,\n };\n }\n\n return json as T;\n }\n\n // Error response — check if retryable\n if (this._shouldRetry(method, response.status, attempt, options)) {\n const retryDelay = this._getRetryDelay(\n attempt,\n response.status,\n response.headers,\n );\n await sleep(retryDelay);\n return this._request<T>(method, url, body, options, attempt + 1);\n }\n\n // Non-retryable error — parse and throw\n const errorBody = await this._safeParseJson(response);\n throw this._buildError(response.status, errorBody, requestId, rateLimitInfo);\n } catch (error) {\n clearTimeout(timeoutId);\n\n // Re-throw our own errors\n if (error instanceof CyncoError) {\n throw error;\n }\n\n // Handle abort/timeout\n if (error instanceof DOMException && error.name === 'AbortError') {\n // Check if this was user cancellation vs our timeout\n if (options?.signal?.aborted) {\n throw new CyncoError('Request was cancelled', {\n code: 'cancelled',\n status: 0,\n requestId,\n });\n }\n throw new TimeoutError(requestId, this._timeout);\n }\n\n // Connection/network errors — retry if applicable\n if (this._shouldRetryOnNetworkError(method, attempt, options)) {\n const retryDelay = this._getRetryDelay(attempt, 0, undefined);\n await sleep(retryDelay);\n return this._request<T>(method, url, body, options, attempt + 1);\n }\n\n throw new ConnectionError(\n requestId,\n error instanceof Error ? error : new Error(String(error)),\n );\n }\n }\n\n private _shouldRetry(\n method: string,\n status: number,\n attempt: number,\n options?: RequestOptions,\n ): boolean {\n if (attempt >= this._maxRetries) return false;\n if (!RETRYABLE_STATUS_CODES.has(status)) return false;\n\n // Non-idempotent methods only retry if they have an idempotency key\n if (\n !RETRYABLE_METHODS.has(method) &&\n !options?.idempotencyKey\n ) {\n // Exception: 429 is always retryable (request was never processed)\n return status === 429;\n }\n\n return true;\n }\n\n private _shouldRetryOnNetworkError(\n method: string,\n attempt: number,\n options?: RequestOptions,\n ): boolean {\n if (attempt >= this._maxRetries) return false;\n return RETRYABLE_METHODS.has(method) || !!options?.idempotencyKey;\n }\n\n /**\n * Calculate retry delay with exponential backoff and jitter.\n * For 429 responses, uses Retry-After header if present.\n */\n private _getRetryDelay(\n attempt: number,\n status: number,\n headers: Headers | undefined,\n ): number {\n // Respect Retry-After header for rate limits\n if (status === 429 && headers) {\n const retryAfter = headers.get('Retry-After');\n if (retryAfter) {\n const seconds = parseInt(retryAfter, 10);\n if (!Number.isNaN(seconds)) {\n return seconds * 1000;\n }\n }\n }\n\n // Exponential backoff with jitter: base * 2^attempt + random jitter\n const baseDelay = 500; // 500ms\n const exponentialDelay = baseDelay * Math.pow(2, attempt);\n const jitter = Math.random() * baseDelay;\n return Math.min(exponentialDelay + jitter, 30_000); // cap at 30s\n }\n\n private _parseRateLimitHeaders(\n headers: Headers,\n ): RateLimitInfo | undefined {\n const limit = headers.get('X-RateLimit-Limit');\n const remaining = headers.get('X-RateLimit-Remaining');\n const reset = headers.get('X-RateLimit-Reset');\n\n if (!limit || !remaining || !reset) return undefined;\n\n return {\n limit: parseInt(limit, 10),\n remaining: parseInt(remaining, 10),\n reset: parseInt(reset, 10),\n };\n }\n\n private async _safeParseJson(\n response: Response,\n ): Promise<ErrorResponse | null> {\n try {\n return (await response.json()) as ErrorResponse;\n } catch {\n return null;\n }\n }\n\n private _buildError(\n status: number,\n body: ErrorResponse | null,\n requestId: string,\n rateLimitInfo?: RateLimitInfo,\n ): CyncoError {\n const code = body?.error?.code ?? 'unknown_error';\n const message =\n body?.error?.message ?? `Request failed with status ${status}`;\n const details = body?.error?.details;\n const meta = { ...body?.meta, requestId, rateLimit: rateLimitInfo };\n\n switch (status) {\n case 401:\n return new AuthenticationError(message, {\n code,\n status,\n requestId,\n meta,\n });\n case 403:\n return new PermissionError(message, {\n code,\n status,\n requestId,\n meta,\n });\n case 404:\n return new NotFoundError(message, {\n code,\n status,\n requestId,\n meta,\n });\n case 409:\n return new ConflictError(message, {\n code,\n status,\n requestId,\n meta,\n });\n case 422:\n return new ValidationError(message, {\n code,\n status,\n requestId,\n details,\n meta,\n });\n case 429:\n return new RateLimitError(message, {\n code,\n status,\n requestId,\n retryAfter: rateLimitInfo?.reset ?? 0,\n meta,\n });\n default:\n if (status >= 500) {\n return new InternalError(message, {\n code,\n status,\n requestId,\n meta,\n });\n }\n return new CyncoError(message, {\n code,\n status,\n requestId,\n details,\n meta,\n });\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Create an AbortSignal that triggers when ANY of the provided signals abort.\n */\nfunction anySignal(signals: AbortSignal[]): AbortSignal {\n const controller = new AbortController();\n\n for (const signal of signals) {\n if (signal.aborted) {\n controller.abort(signal.reason);\n return controller.signal;\n }\n signal.addEventListener(\n 'abort',\n () => controller.abort(signal.reason),\n { once: true },\n );\n }\n\n return controller.signal;\n}\n","import { createHmac, timingSafeEqual } from 'node:crypto';\n\n/** Maximum age in seconds for a webhook timestamp before it is rejected. */\nconst TIMESTAMP_TOLERANCE_SECONDS = 300; // 5 minutes\n\nexport interface WebhookVerifyOptions {\n /** Override the tolerance window in seconds. Defaults to 300 (5 minutes). */\n tolerance?: number;\n}\n\n/**\n * Utilities for verifying Cynco webhook signatures.\n *\n * All methods are static — no instantiation required.\n *\n * ```ts\n * import Cynco from 'cynco';\n *\n * const isValid = Cynco.webhooks.verify(\n * rawBody,\n * signature,\n * timestamp,\n * webhookSecret,\n * );\n * ```\n */\nexport const webhookVerifier = {\n /**\n * Verify a webhook signature.\n *\n * @param payload - The raw request body as a string.\n * @param signature - The value of the `X-Webhook-Signature` header.\n * @param timestamp - The value of the `X-Webhook-Timestamp` header.\n * @param secret - Your webhook signing secret.\n * @param options - Optional configuration.\n * @returns `true` if the signature is valid and the timestamp is within tolerance.\n */\n verify(\n payload: string,\n signature: string,\n timestamp: string,\n secret: string,\n options?: WebhookVerifyOptions,\n ): boolean {\n const tolerance =\n options?.tolerance ?? TIMESTAMP_TOLERANCE_SECONDS;\n\n // Validate timestamp freshness\n const ts = parseInt(timestamp, 10);\n if (Number.isNaN(ts)) {\n return false;\n }\n\n const now = Math.floor(Date.now() / 1000);\n if (Math.abs(now - ts) > tolerance) {\n return false;\n }\n\n // Compute expected signature: HMAC-SHA256(secret, timestamp.payload)\n const signedContent = `${timestamp}.${payload}`;\n const expectedSignature = createHmac('sha256', secret)\n .update(signedContent)\n .digest('hex');\n\n // Constant-time comparison\n const sigBuffer = Buffer.from(signature, 'utf8');\n const expectedBuffer = Buffer.from(expectedSignature, 'utf8');\n\n if (sigBuffer.length !== expectedBuffer.length) {\n return false;\n }\n\n return timingSafeEqual(sigBuffer, expectedBuffer);\n },\n\n /**\n * Verify a webhook signature, throwing an error if invalid.\n *\n * @throws {Error} If the signature is invalid or the timestamp is stale.\n */\n verifyOrThrow(\n payload: string,\n signature: string,\n timestamp: string,\n secret: string,\n options?: WebhookVerifyOptions,\n ): void {\n const tolerance =\n options?.tolerance ?? TIMESTAMP_TOLERANCE_SECONDS;\n\n const ts = parseInt(timestamp, 10);\n if (Number.isNaN(ts)) {\n throw new Error('Invalid webhook timestamp');\n }\n\n const now = Math.floor(Date.now() / 1000);\n if (Math.abs(now - ts) > tolerance) {\n throw new Error(\n `Webhook timestamp is too old (${Math.abs(now - ts)}s > ${tolerance}s tolerance)`,\n );\n }\n\n const signedContent = `${timestamp}.${payload}`;\n const expectedSignature = createHmac('sha256', secret)\n .update(signedContent)\n .digest('hex');\n\n const sigBuffer = Buffer.from(signature, 'utf8');\n const expectedBuffer = Buffer.from(expectedSignature, 'utf8');\n\n if (\n sigBuffer.length !== expectedBuffer.length ||\n !timingSafeEqual(sigBuffer, expectedBuffer)\n ) {\n throw new Error('Invalid webhook signature');\n }\n },\n\n /**\n * Generate a signature for testing purposes.\n *\n * @param payload - The request body.\n * @param secret - The webhook secret.\n * @param timestamp - Unix timestamp in seconds (defaults to now).\n * @returns An object with the signature and timestamp strings.\n */\n sign(\n payload: string,\n secret: string,\n timestamp?: number,\n ): { signature: string; timestamp: string } {\n const ts = timestamp ?? Math.floor(Date.now() / 1000);\n const signedContent = `${ts}.${payload}`;\n const signature = createHmac('sha256', secret)\n .update(signedContent)\n .digest('hex');\n\n return { signature, timestamp: String(ts) };\n },\n};\n","import type {\n ListParams,\n PaginatedResponse,\n CursorPaginatedResponse,\n} from './types.js';\n\n/**\n * A paginated list that doubles as an async iterator for auto-pagination.\n *\n * Standard usage (single page):\n * ```ts\n * const page = await cynco.invoices.list({ limit: 20 });\n * console.log(page.data); // Invoice[]\n * console.log(page.pagination); // { total, limit, offset, hasMore }\n * ```\n *\n * Auto-pagination (all pages):\n * ```ts\n * for await (const invoice of cynco.invoices.list({ limit: 50 })) {\n * console.log(invoice.id);\n * }\n * ```\n */\nexport class Page<T> implements AsyncIterable<T> {\n readonly success: true = true;\n readonly data: T[];\n readonly pagination: PaginatedResponse<T>['pagination'];\n readonly links?: PaginatedResponse<T>['links'];\n readonly meta?: PaginatedResponse<T>['meta'];\n\n private readonly _fetchPage: (\n params: ListParams,\n ) => Promise<PaginatedResponse<T>>;\n private readonly _params: ListParams;\n\n constructor(\n response: PaginatedResponse<T>,\n fetchPage: (params: ListParams) => Promise<PaginatedResponse<T>>,\n params: ListParams,\n ) {\n this.data = response.data;\n this.pagination = response.pagination;\n this.links = response.links;\n this.meta = response.meta;\n this._fetchPage = fetchPage;\n this._params = params;\n }\n\n /** Whether there are more pages after this one. */\n get hasMore(): boolean {\n return this.pagination.hasMore;\n }\n\n /** Fetch the next page. Returns null if there are no more pages. */\n async nextPage(): Promise<Page<T> | null> {\n if (!this.hasMore) {\n return null;\n }\n\n // The API uses page-based params but returns offset in the pagination response.\n // Compute the next page number from the current offset + limit.\n const nextPage = Math.floor(this.pagination.offset / this.pagination.limit) + 2;\n const nextParams: ListParams = {\n ...this._params,\n page: nextPage,\n };\n\n const response = await this._fetchPage(nextParams);\n return new Page(response, this._fetchPage, nextParams);\n }\n\n /** Iterate over all items across all pages. */\n async *[Symbol.asyncIterator](): AsyncIterator<T> {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let page: Page<T> | null = this;\n\n while (page) {\n for (const item of page.data) {\n yield item;\n }\n page = await page.nextPage();\n }\n }\n}\n\n/**\n * A cursor-based paginated list with async iteration support.\n */\nexport class CursorPage<T> implements AsyncIterable<T> {\n readonly success: true = true;\n readonly data: T[];\n readonly pagination: CursorPaginatedResponse<T>['pagination'];\n readonly links?: CursorPaginatedResponse<T>['links'];\n readonly meta?: CursorPaginatedResponse<T>['meta'];\n\n private readonly _fetchPage: (\n params: ListParams,\n ) => Promise<CursorPaginatedResponse<T>>;\n private readonly _params: ListParams;\n\n constructor(\n response: CursorPaginatedResponse<T>,\n fetchPage: (params: ListParams) => Promise<CursorPaginatedResponse<T>>,\n params: ListParams,\n ) {\n this.data = response.data;\n this.pagination = response.pagination;\n this.links = response.links;\n this.meta = response.meta;\n this._fetchPage = fetchPage;\n this._params = params;\n }\n\n get hasMore(): boolean {\n return this.pagination.hasMore;\n }\n\n async nextPage(): Promise<CursorPage<T> | null> {\n if (!this.hasMore || !this.pagination.nextCursor) {\n return null;\n }\n\n const nextParams: ListParams = {\n ...this._params,\n cursor: this.pagination.nextCursor,\n };\n\n const response = await this._fetchPage(nextParams);\n return new CursorPage(response, this._fetchPage, nextParams);\n }\n\n async *[Symbol.asyncIterator](): AsyncIterator<T> {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n let page: CursorPage<T> | null = this;\n\n while (page) {\n for (const item of page.data) {\n yield item;\n }\n page = await page.nextPage();\n }\n }\n}\n\n/**\n * A promise that resolves to a `Page<T>` but also implements `AsyncIterable<T>`,\n * so it can be used directly in `for await...of` without an intermediate `await`:\n *\n * ```ts\n * // Both work:\n * const page = await cynco.invoices.list(); // Page<Invoice>\n * for await (const inv of cynco.invoices.list()) { ... }\n * ```\n */\nexport class PagePromise<T>\n implements PromiseLike<Page<T>>, AsyncIterable<T>\n{\n private readonly _promise: Promise<Page<T>>;\n\n constructor(promise: Promise<Page<T>>) {\n this._promise = promise;\n }\n\n /** Satisfy PromiseLike so `await` works. */\n then<TResult1 = Page<T>, TResult2 = never>(\n onfulfilled?:\n | ((value: Page<T>) => TResult1 | PromiseLike<TResult1>)\n | null\n | undefined,\n onrejected?:\n | ((reason: unknown) => TResult2 | PromiseLike<TResult2>)\n | null\n | undefined,\n ): Promise<TResult1 | TResult2> {\n return this._promise.then(onfulfilled, onrejected);\n }\n\n /** Satisfy Promise-like `catch`. */\n catch<TResult = never>(\n onrejected?:\n | ((reason: unknown) => TResult | PromiseLike<TResult>)\n | null\n | undefined,\n ): Promise<Page<T> | TResult> {\n return this._promise.catch(onrejected);\n }\n\n /** Satisfy Promise-like `finally`. */\n finally(onfinally?: (() => void) | null | undefined): Promise<Page<T>> {\n return this._promise.finally(onfinally);\n }\n\n /**\n * Iterate over all items across all pages.\n * Fetches the first page lazily, then auto-paginates.\n */\n async *[Symbol.asyncIterator](): AsyncIterator<T> {\n const page = await this._promise;\n yield* page;\n }\n}\n\n/**\n * A promise that resolves to a `CursorPage<T>` but also implements `AsyncIterable<T>`.\n */\nexport class CursorPagePromise<T>\n implements PromiseLike<CursorPage<T>>, AsyncIterable<T>\n{\n private readonly _promise: Promise<CursorPage<T>>;\n\n constructor(promise: Promise<CursorPage<T>>) {\n this._promise = promise;\n }\n\n then<TResult1 = CursorPage<T>, TResult2 = never>(\n onfulfilled?:\n | ((value: CursorPage<T>) => TResult1 | PromiseLike<TResult1>)\n | null\n | undefined,\n onrejected?:\n | ((reason: unknown) => TResult2 | PromiseLike<TResult2>)\n | null\n | undefined,\n ): Promise<TResult1 | TResult2> {\n return this._promise.then(onfulfilled, onrejected);\n }\n\n catch<TResult = never>(\n onrejected?:\n | ((reason: unknown) => TResult | PromiseLike<TResult>)\n | null\n | undefined,\n ): Promise<CursorPage<T> | TResult> {\n return this._promise.catch(onrejected);\n }\n\n finally(\n onfinally?: (() => void) | null | undefined,\n ): Promise<CursorPage<T>> {\n return this._promise.finally(onfinally);\n }\n\n async *[Symbol.asyncIterator](): AsyncIterator<T> {\n const page = await this._promise;\n yield* page;\n }\n}\n","import type { CyncoClient } from '../client.js';\nimport { Page, PagePromise } from '../pagination.js';\nimport type {\n Invoice,\n InvoiceListParams,\n InvoiceUpdateInput,\n PaginatedResponse,\n RequestOptions,\n} from '../types.js';\n\nexport class Invoices {\n constructor(private readonly _client: CyncoClient) {}\n\n /**\n * List invoices with pagination.\n *\n * Returns a `PagePromise` that can be awaited for a single page or used\n * directly as an async iterator for auto-pagination:\n * ```ts\n * // Single page\n * const page = await cynco.invoices.list({ limit: 20 });\n * console.log(page.data);\n *\n * // Auto-pagination\n * for await (const invoice of cynco.invoices.list({ limit: 50 })) {\n * console.log(invoice.id);\n * }\n * ```\n */\n list(params?: InvoiceListParams): PagePromise<Invoice> {\n const fetchPage = async (\n p: InvoiceListParams,\n ): Promise<PaginatedResponse<Invoice>> => {\n return this._client.getList<Invoice>('/invoices', p as Record<string, unknown>);\n };\n\n return new PagePromise(\n fetchPage(params ?? {}).then(\n (response) => new Page(response, fetchPage, params ?? {}),\n ),\n );\n }\n\n /** Retrieve a single invoice by ID. */\n async retrieve(id: string): Promise<Invoice> {\n const response = await this._client.get<Invoice>(`/invoices/${id}`);\n return response.data;\n }\n\n /** Update an existing invoice (memo, paymentTerms, dueDate only). */\n async update(\n id: string,\n data: InvoiceUpdateInput,\n options?: RequestOptions,\n ): Promise<Invoice> {\n const response = await this._client.patch<Invoice>(\n `/invoices/${id}`,\n data,\n options,\n );\n return response.data;\n }\n\n /** Delete an invoice. Only draft invoices can be deleted. */\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this._client.delete(`/invoices/${id}`, options);\n }\n\n /** Send an invoice to the customer via email. */\n async send(id: string, options?: RequestOptions): Promise<Invoice> {\n const response = await this._client.post<Invoice>(\n `/invoices/${id}/send`,\n undefined,\n options,\n );\n return response.data;\n }\n\n /** Mark an invoice as paid. */\n async markPaid(\n id: string,\n data?: { paidDate?: string; paymentMethod?: string },\n options?: RequestOptions,\n ): Promise<Invoice> {\n const response = await this._client.post<Invoice>(\n `/invoices/${id}/mark-paid`,\n data,\n options,\n );\n return response.data;\n }\n\n /** Void an invoice. */\n async void(id: string, options?: RequestOptions): Promise<Invoice> {\n const response = await this._client.post<Invoice>(\n `/invoices/${id}/void`,\n undefined,\n options,\n );\n return response.data;\n }\n\n /** Get the PDF download URL for an invoice. */\n async getPdf(id: string): Promise<{ url: string }> {\n const response = await this._client.get<{ url: string }>(\n `/invoices/${id}/pdf`,\n );\n return response.data;\n }\n}\n","import type { CyncoClient } from '../client.js';\nimport { Page, PagePromise } from '../pagination.js';\nimport type {\n Customer,\n CustomerListParams,\n CustomerCreateInput,\n CustomerUpdateInput,\n PaginatedResponse,\n RequestOptions,\n} from '../types.js';\n\nexport class Customers {\n constructor(private readonly _client: CyncoClient) {}\n\n /**\n * List customers with pagination.\n *\n * ```ts\n * for await (const customer of cynco.customers.list({ limit: 50 })) {\n * console.log(customer.name);\n * }\n * ```\n */\n list(params?: CustomerListParams): PagePromise<Customer> {\n const fetchPage = async (\n p: CustomerListParams,\n ): Promise<PaginatedResponse<Customer>> => {\n return this._client.getList<Customer>(\n '/customers',\n p as Record<string, unknown>,\n );\n };\n\n return new PagePromise(\n fetchPage(params ?? {}).then(\n (response) => new Page(response, fetchPage, params ?? {}),\n ),\n );\n }\n\n /** Retrieve a single customer by ID. */\n async retrieve(id: string): Promise<Customer> {\n const response = await this._client.get<Customer>(`/customers/${id}`);\n return response.data;\n }\n\n /** Create a new customer. */\n async create(\n data: CustomerCreateInput,\n options?: RequestOptions,\n ): Promise<Customer> {\n const response = await this._client.post<Customer>(\n '/customers',\n data,\n options,\n );\n return response.data;\n }\n\n /** Update an existing customer. */\n async update(\n id: string,\n data: CustomerUpdateInput,\n options?: RequestOptions,\n ): Promise<Customer> {\n const response = await this._client.patch<Customer>(\n `/customers/${id}`,\n data,\n options,\n );\n return response.data;\n }\n\n /** Delete a customer. Only customers with no associated records can be deleted. */\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this._client.delete(`/customers/${id}`, options);\n }\n}\n","import type { CyncoClient } from '../client.js';\nimport { Page, PagePromise } from '../pagination.js';\nimport type {\n Vendor,\n VendorListParams,\n VendorCreateInput,\n VendorUpdateInput,\n PaginatedResponse,\n RequestOptions,\n} from '../types.js';\n\nexport class Vendors {\n constructor(private readonly _client: CyncoClient) {}\n\n /**\n * List vendors with pagination.\n *\n * ```ts\n * for await (const vendor of cynco.vendors.list({ limit: 50 })) {\n * console.log(vendor.name);\n * }\n * ```\n */\n list(params?: VendorListParams): PagePromise<Vendor> {\n const fetchPage = async (\n p: VendorListParams,\n ): Promise<PaginatedResponse<Vendor>> => {\n return this._client.getList<Vendor>(\n '/vendors',\n p as Record<string, unknown>,\n );\n };\n\n return new PagePromise(\n fetchPage(params ?? {}).then(\n (response) => new Page(response, fetchPage, params ?? {}),\n ),\n );\n }\n\n /** Retrieve a single vendor by ID. */\n async retrieve(id: string): Promise<Vendor> {\n const response = await this._client.get<Vendor>(`/vendors/${id}`);\n return response.data;\n }\n\n /** Create a new vendor. */\n async create(\n data: VendorCreateInput,\n options?: RequestOptions,\n ): Promise<Vendor> {\n const response = await this._client.post<Vendor>(\n '/vendors',\n data,\n options,\n );\n return response.data;\n }\n\n /** Update an existing vendor. */\n async update(\n id: string,\n data: VendorUpdateInput,\n options?: RequestOptions,\n ): Promise<Vendor> {\n const response = await this._client.patch<Vendor>(\n `/vendors/${id}`,\n data,\n options,\n );\n return response.data;\n }\n\n /** Delete a vendor. Only vendors with no associated records can be deleted. */\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this._client.delete(`/vendors/${id}`, options);\n }\n}\n","import type { CyncoClient } from '../client.js';\nimport { Page, PagePromise } from '../pagination.js';\nimport type {\n Bill,\n BillListParams,\n BillUpdateInput,\n PaginatedResponse,\n RequestOptions,\n} from '../types.js';\n\nexport class Bills {\n constructor(private readonly _client: CyncoClient) {}\n\n /**\n * List bills with pagination.\n *\n * ```ts\n * for await (const bill of cynco.bills.list({ limit: 50 })) {\n * console.log(bill.billNumber);\n * }\n * ```\n */\n list(params?: BillListParams): PagePromise<Bill> {\n const fetchPage = async (\n p: BillListParams,\n ): Promise<PaginatedResponse<Bill>> => {\n return this._client.getList<Bill>(\n '/bills',\n p as Record<string, unknown>,\n );\n };\n\n return new PagePromise(\n fetchPage(params ?? {}).then(\n (response) => new Page(response, fetchPage, params ?? {}),\n ),\n );\n }\n\n /** Retrieve a single bill by ID. */\n async retrieve(id: string): Promise<Bill> {\n const response = await this._client.get<Bill>(`/bills/${id}`);\n return response.data;\n }\n\n /** Update an existing bill. */\n async update(\n id: string,\n data: BillUpdateInput,\n options?: RequestOptions,\n ): Promise<Bill> {\n const response = await this._client.patch<Bill>(\n `/bills/${id}`,\n data,\n options,\n );\n return response.data;\n }\n\n /** Delete a bill. Only draft bills can be deleted. */\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this._client.delete(`/bills/${id}`, options);\n }\n\n /** Mark a bill as paid. */\n async markPaid(\n id: string,\n data?: { paidDate?: string; paymentMethod?: string },\n options?: RequestOptions,\n ): Promise<Bill> {\n const response = await this._client.post<Bill>(\n `/bills/${id}/mark-paid`,\n data,\n options,\n );\n return response.data;\n }\n\n /** Void a bill. */\n async void(id: string, options?: RequestOptions): Promise<Bill> {\n const response = await this._client.post<Bill>(\n `/bills/${id}/void`,\n undefined,\n options,\n );\n return response.data;\n }\n}\n","import type { CyncoClient } from '../client.js';\nimport { Page, PagePromise } from '../pagination.js';\nimport type {\n Item,\n ItemListParams,\n ItemCreateInput,\n ItemUpdateInput,\n PaginatedResponse,\n RequestOptions,\n} from '../types.js';\n\nexport class Items {\n constructor(private readonly _client: CyncoClient) {}\n\n /**\n * List items (products and services) with pagination.\n *\n * ```ts\n * for await (const item of cynco.items.list({ type: 'service' })) {\n * console.log(item.name);\n * }\n * ```\n */\n list(params?: ItemListParams): PagePromise<Item> {\n const fetchPage = async (\n p: ItemListParams,\n ): Promise<PaginatedResponse<Item>> => {\n return this._client.getList<Item>(\n '/items',\n p as Record<string, unknown>,\n );\n };\n\n return new PagePromise(\n fetchPage(params ?? {}).then(\n (response) => new Page(response, fetchPage, params ?? {}),\n ),\n );\n }\n\n /** Retrieve a single item by ID. */\n async retrieve(id: string): Promise<Item> {\n const response = await this._client.get<Item>(`/items/${id}`);\n return response.data;\n }\n\n /** Create a new item. */\n async create(\n data: ItemCreateInput,\n options?: RequestOptions,\n ): Promise<Item> {\n const response = await this._client.post<Item>('/items', data, options);\n return response.data;\n }\n\n /** Update an existing item. */\n async update(\n id: string,\n data: ItemUpdateInput,\n options?: RequestOptions,\n ): Promise<Item> {\n const response = await this._client.patch<Item>(\n `/items/${id}`,\n data,\n options,\n );\n return response.data;\n }\n\n /** Delete an item. Items referenced by invoices or bills cannot be deleted. */\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this._client.delete(`/items/${id}`, options);\n }\n}\n","import type { CyncoClient } from '../client.js';\nimport { Page, PagePromise } from '../pagination.js';\nimport type {\n Account,\n AccountListParams,\n PaginatedResponse,\n} from '../types.js';\n\nexport class Accounts {\n constructor(private readonly _client: CyncoClient) {}\n\n /**\n * List chart of accounts.\n *\n * ```ts\n * const page = await cynco.accounts.list({ account_type: 'revenue' });\n * for (const account of page.data) {\n * console.log(`${account.accountCode} — ${account.accountName}`);\n * }\n * ```\n */\n list(params?: AccountListParams): PagePromise<Account> {\n const fetchPage = async (\n p: AccountListParams,\n ): Promise<PaginatedResponse<Account>> => {\n return this._client.getList<Account>(\n '/accounts',\n p as Record<string, unknown>,\n );\n };\n\n return new PagePromise(\n fetchPage(params ?? {}).then(\n (response) => new Page(response, fetchPage, params ?? {}),\n ),\n );\n }\n\n /** Retrieve a single account by ID. */\n async retrieve(id: string): Promise<Account> {\n const response = await this._client.get<Account>(`/accounts?id=${encodeURIComponent(id)}`);\n return response.data; // accounts uses ?id= since there's no /:id route\n }\n}\n","import type { CyncoClient } from '../client.js';\nimport { Page, PagePromise } from '../pagination.js';\nimport type {\n JournalEntry,\n JournalEntryListParams,\n JournalEntryCreateInput,\n JournalEntryUpdateInput,\n PaginatedResponse,\n RequestOptions,\n} from '../types.js';\n\nexport class JournalEntries {\n constructor(private readonly _client: CyncoClient) {}\n\n /**\n * List journal entries with pagination.\n *\n * ```ts\n * for await (const entry of cynco.journalEntries.list({ status: 'posted' })) {\n * console.log(entry.entryNumber);\n * }\n * ```\n */\n list(params?: JournalEntryListParams): PagePromise<JournalEntry> {\n const fetchPage = async (\n p: JournalEntryListParams,\n ): Promise<PaginatedResponse<JournalEntry>> => {\n return this._client.getList<JournalEntry>(\n '/journal-entries',\n p as Record<string, unknown>,\n );\n };\n\n return new PagePromise(\n fetchPage(params ?? {}).then(\n (response) => new Page(response, fetchPage, params ?? {}),\n ),\n );\n }\n\n /** Retrieve a single journal entry by ID. */\n async retrieve(id: string): Promise<JournalEntry> {\n const response = await this._client.get<JournalEntry>(\n `/journal-entries/${id}`,\n );\n return response.data;\n }\n\n /** Create a new journal entry. */\n async create(\n data: JournalEntryCreateInput,\n options?: RequestOptions,\n ): Promise<JournalEntry> {\n const response = await this._client.post<JournalEntry>(\n '/journal-entries',\n data,\n options,\n );\n return response.data;\n }\n\n /** Update a draft journal entry. */\n async update(\n id: string,\n data: JournalEntryUpdateInput,\n options?: RequestOptions,\n ): Promise<JournalEntry> {\n const response = await this._client.patch<JournalEntry>(\n `/journal-entries/${id}`,\n data,\n options,\n );\n return response.data;\n }\n\n /** Delete a draft journal entry. */\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this._client.delete(`/journal-entries/${id}`, options);\n }\n\n /** Post a draft journal entry to the ledger. */\n async post(id: string, options?: RequestOptions): Promise<JournalEntry> {\n const response = await this._client.post<JournalEntry>(\n `/journal-entries/${id}/post`,\n undefined,\n options,\n );\n return response.data;\n }\n\n /** Void a posted journal entry. */\n async void(id: string, options?: RequestOptions): Promise<JournalEntry> {\n const response = await this._client.post<JournalEntry>(\n `/journal-entries/${id}/void`,\n undefined,\n options,\n );\n return response.data;\n }\n}\n","import type { CyncoClient } from '../client.js';\nimport { Page, PagePromise } from '../pagination.js';\nimport type {\n BankAccount,\n BankAccountListParams,\n BankAccountCreateInput,\n BankAccountUpdateInput,\n BankTransaction,\n BankTransactionListParams,\n PaginatedResponse,\n RequestOptions,\n} from '../types.js';\n\nexport class BankAccounts {\n constructor(private readonly _client: CyncoClient) {}\n\n /**\n * List bank accounts with pagination.\n *\n * ```ts\n * for await (const account of cynco.bankAccounts.list()) {\n * console.log(`${account.bankName} — ${account.name}`);\n * }\n * ```\n */\n list(params?: BankAccountListParams): PagePromise<BankAccount> {\n const fetchPage = async (\n p: BankAccountListParams,\n ): Promise<PaginatedResponse<BankAccount>> => {\n return this._client.getList<BankAccount>(\n '/bank-accounts',\n p as Record<string, unknown>,\n );\n };\n\n return new PagePromise(\n fetchPage(params ?? {}).then(\n (response) => new Page(response, fetchPage, params ?? {}),\n ),\n );\n }\n\n /** Retrieve a single bank account by ID. */\n async retrieve(id: string): Promise<BankAccount> {\n const response = await this._client.get<BankAccount>(\n `/bank-accounts/${id}`,\n );\n return response.data;\n }\n\n /** Create a new bank account. */\n async create(\n data: BankAccountCreateInput,\n options?: RequestOptions,\n ): Promise<BankAccount> {\n const response = await this._client.post<BankAccount>(\n '/bank-accounts',\n data,\n options,\n );\n return response.data;\n }\n\n /** Update an existing bank account. */\n async update(\n id: string,\n data: BankAccountUpdateInput,\n options?: RequestOptions,\n ): Promise<BankAccount> {\n const response = await this._client.patch<BankAccount>(\n `/bank-accounts/${id}`,\n data,\n options,\n );\n return response.data;\n }\n\n /** Delete a bank account. */\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this._client.delete(`/bank-accounts/${id}`, options);\n }\n\n /**\n * List transactions for a specific bank account.\n *\n * ```ts\n * for await (const txn of cynco.bankAccounts.listTransactions('ba_123', { status: 'cleared' })) {\n * console.log(`${txn.date} ${txn.description} ${txn.amount}`);\n * }\n * ```\n */\n listTransactions(\n bankAccountId: string,\n params?: BankTransactionListParams,\n ): PagePromise<BankTransaction> {\n const fetchPage = async (\n p: BankTransactionListParams,\n ): Promise<PaginatedResponse<BankTransaction>> => {\n return this._client.getList<BankTransaction>(\n `/bank-accounts/${bankAccountId}/transactions`,\n p as Record<string, unknown>,\n );\n };\n\n return new PagePromise(\n fetchPage(params ?? {}).then(\n (response) => new Page(response, fetchPage, params ?? {}),\n ),\n );\n }\n}\n","import type { CyncoClient } from '../client.js';\nimport type {\n ReportParams,\n BalanceSheetReport,\n ProfitAndLossReport,\n TrialBalanceReport,\n} from '../types.js';\n\nexport class Reports {\n constructor(private readonly _client: CyncoClient) {}\n\n /** Generate a balance sheet report. */\n async balanceSheet(\n params: Pick<ReportParams, 'endDate' | 'currency' | 'comparePrevious'>,\n ): Promise<BalanceSheetReport> {\n const response = await this._client.get<BalanceSheetReport>(\n '/reports/balance-sheet',\n { ...params } as unknown as Record<string, unknown>,\n );\n return response.data;\n }\n\n /** Generate a profit and loss (income statement) report. */\n async profitAndLoss(params: ReportParams): Promise<ProfitAndLossReport> {\n const response = await this._client.get<ProfitAndLossReport>(\n '/reports/profit-and-loss',\n { ...params } as unknown as Record<string, unknown>,\n );\n return response.data;\n }\n\n /** Generate a trial balance report. */\n async trialBalance(\n params: Pick<ReportParams, 'endDate' | 'currency'>,\n ): Promise<TrialBalanceReport> {\n const response = await this._client.get<TrialBalanceReport>(\n '/reports/trial-balance',\n { ...params } as unknown as Record<string, unknown>,\n );\n return response.data;\n }\n}\n","import type { CyncoClient } from '../client.js';\nimport { Page, PagePromise } from '../pagination.js';\nimport type {\n Webhook,\n WebhookListParams,\n WebhookCreateInput,\n WebhookUpdateInput,\n PaginatedResponse,\n RequestOptions,\n} from '../types.js';\n\nexport class Webhooks {\n constructor(private readonly _client: CyncoClient) {}\n\n /**\n * List webhook endpoints with pagination.\n *\n * ```ts\n * for await (const webhook of cynco.webhooks.list()) {\n * console.log(`${webhook.url} — ${webhook.events.join(', ')}`);\n * }\n * ```\n */\n list(params?: WebhookListParams): PagePromise<Webhook> {\n const fetchPage = async (\n p: WebhookListParams,\n ): Promise<PaginatedResponse<Webhook>> => {\n return this._client.getList<Webhook>(\n '/webhooks',\n p as Record<string, unknown>,\n );\n };\n\n return new PagePromise(\n fetchPage(params ?? {}).then(\n (response) => new Page(response, fetchPage, params ?? {}),\n ),\n );\n }\n\n /** Retrieve a single webhook endpoint by ID. */\n async retrieve(id: string): Promise<Webhook> {\n const response = await this._client.get<Webhook>(`/webhooks/${id}`);\n return response.data;\n }\n\n /** Create a new webhook endpoint. */\n async create(\n data: WebhookCreateInput,\n options?: RequestOptions,\n ): Promise<Webhook> {\n const response = await this._client.post<Webhook>(\n '/webhooks',\n data,\n options,\n );\n return response.data;\n }\n\n /** Update an existing webhook endpoint. */\n async update(\n id: string,\n data: WebhookUpdateInput,\n options?: RequestOptions,\n ): Promise<Webhook> {\n const response = await this._client.patch<Webhook>(\n `/webhooks/${id}`,\n data,\n options,\n );\n return response.data;\n }\n\n /** Delete a webhook endpoint. */\n async delete(id: string, options?: RequestOptions): Promise<void> {\n await this._client.delete(`/webhooks/${id}`, options);\n }\n\n /** Rotate the signing secret for a webhook endpoint. Returns the new secret. */\n async rotateSecret(id: string): Promise<{ secret: string }> {\n const response = await this._client.post<{ secret: string }>(\n `/webhooks/${id}/rotate-secret`,\n );\n return response.data;\n }\n}\n","import { CyncoClient } from './client.js';\nimport { webhookVerifier } from './webhooks.js';\nimport { Invoices } from './resources/invoices.js';\nimport { Customers } from './resources/customers.js';\nimport { Vendors } from './resources/vendors.js';\nimport { Bills } from './resources/bills.js';\nimport { Items } from './resources/items.js';\nimport { Accounts } from './resources/accounts.js';\nimport { JournalEntries } from './resources/journal-entries.js';\nimport { BankAccounts } from './resources/bank-accounts.js';\nimport { Reports } from './resources/reports.js';\nimport { Webhooks } from './resources/webhooks.js';\nimport type { CyncoClientOptions } from './types.js';\n\n/**\n * The official Cynco TypeScript SDK.\n *\n * ```ts\n * import Cynco from 'cynco';\n *\n * const cynco = new Cynco('cak_your_api_key');\n *\n * const { data } = await cynco.invoices.list({ limit: 20 });\n * ```\n */\nclass Cynco {\n /** Invoices resource. */\n readonly invoices: Invoices;\n /** Customers resource. */\n readonly customers: Customers;\n /** Vendors resource. */\n readonly vendors: Vendors;\n /** Bills resource. */\n readonly bills: Bills;\n /** Items (products & services) resource. */\n readonly items: Items;\n /** Chart of accounts resource. */\n readonly accounts: Accounts;\n /** Journal entries resource. */\n readonly journalEntries: JournalEntries;\n /** Bank accounts resource. */\n readonly bankAccounts: BankAccounts;\n /** Financial reports resource. */\n readonly reports: Reports;\n /** Webhook endpoints resource. */\n readonly webhooks: Webhooks;\n\n /**\n * Static webhook signature verification utilities.\n *\n * ```ts\n * const valid = Cynco.webhooks.verify(payload, signature, timestamp, secret);\n * ```\n */\n static readonly webhooks = webhookVerifier;\n\n private readonly _client: CyncoClient;\n\n /**\n * Create a new Cynco client instance.\n *\n * @param apiKey - Your Cynco API key (starts with `cak_`).\n * @param options - Optional client configuration.\n */\n constructor(apiKey: string, options?: CyncoClientOptions) {\n this._client = new CyncoClient(apiKey, options);\n\n this.invoices = new Invoices(this._client);\n this.customers = new Customers(this._client);\n this.vendors = new Vendors(this._client);\n this.bills = new Bills(this._client);\n this.items = new Items(this._client);\n this.accounts = new Accounts(this._client);\n this.journalEntries = new JournalEntries(this._client);\n this.bankAccounts = new BankAccounts(this._client);\n this.reports = new Reports(this._client);\n this.webhooks = new Webhooks(this._client);\n }\n}\n\n// ---------------------------------------------------------------------------\n// Re-exports\n// ---------------------------------------------------------------------------\n\nexport default Cynco;\nexport { Cynco };\n\n// Client\nexport { CyncoClient } from './client.js';\n\n// Errors\nexport {\n CyncoError,\n AuthenticationError,\n PermissionError,\n NotFoundError,\n ConflictError,\n ValidationError,\n RateLimitError,\n InternalError,\n TimeoutError,\n ConnectionError,\n} from './errors.js';\n\n// Pagination\nexport { Page, CursorPage, PagePromise, CursorPagePromise } from './pagination.js';\n\n// Webhooks\nexport { webhookVerifier } from './webhooks.js';\n\n// Resources\nexport { Invoices } from './resources/invoices.js';\nexport { Customers } from './resources/customers.js';\nexport { Vendors } from './resources/vendors.js';\nexport { Bills } from './resources/bills.js';\nexport { Items } from './resources/items.js';\nexport { Accounts } from './resources/accounts.js';\nexport { JournalEntries } from './resources/journal-entries.js';\nexport { BankAccounts } from './resources/bank-accounts.js';\nexport { Reports } from './resources/reports.js';\nexport { Webhooks } from './resources/webhooks.js';\n\n// Types — re-export everything from types.ts\nexport type {\n // Client config\n CyncoClientOptions,\n RequestOptions,\n // Response envelopes\n CyncoResponse,\n PaginatedResponse,\n CursorPaginatedResponse,\n OffsetPagination,\n CursorPagination,\n PaginationLinks,\n ResponseMeta,\n RateLimitInfo,\n ErrorResponse,\n ValidationDetail,\n // List params\n ListParams,\n InvoiceListParams,\n CustomerListParams,\n VendorListParams,\n BillListParams,\n ItemListParams,\n AccountListParams,\n JournalEntryListParams,\n BankAccountListParams,\n BankTransactionListParams,\n WebhookListParams,\n // Create / update inputs\n InvoiceUpdateInput,\n CustomerCreateInput,\n CustomerUpdateInput,\n VendorCreateInput,\n VendorUpdateInput,\n BillUpdateInput,\n ItemCreateInput,\n ItemUpdateInput,\n JournalEntryCreateInput,\n JournalEntryUpdateInput,\n JournalEntryLineInput,\n BankAccountCreateInput,\n BankAccountUpdateInput,\n WebhookCreateInput,\n WebhookUpdateInput,\n // Resource types\n Invoice,\n InvoiceStatus,\n Customer,\n Vendor,\n Bill,\n BillStatus,\n Item,\n Account,\n AccountType,\n JournalEntry,\n JournalEntryLine,\n BankAccount,\n BankTransaction,\n Webhook,\n WebhookEvent,\n WebhookPayload,\n // Reports\n ReportParams,\n BalanceSheetReport,\n ProfitAndLossReport,\n TrialBalanceReport,\n TrialBalanceRow,\n ReportSection,\n ReportRow,\n} from './types.js';\n"]}
|