Skip to content

Built for people who want to own their automations. Join the waitlist for an invite.

Package listing

@kody/paypal

src/index.ts

92 lines · 2.6 KB · TypeScript
export {
	CLIENT_ID_SETUP_URL,
	CLIENT_SECRET_SETUP_URL,
	DASHBOARD_APPS_URL,
	LIVE_API_BASE_URL,
	LIVE_API_HOST,
	PayPalApiError,
	SANDBOX_API_BASE_URL,
	SANDBOX_API_HOST,
	clientIdSetupUrl,
	clientSecretSetupUrl,
	mutationPreview,
	paypalListBalances,
	resolveClientIdSecretName,
	resolveClientSecretSecretName,
} from './paypal-core.ts'
export {
	createInvoice,
	findInvoice,
	getInvoice,
	listInvoices,
	searchInvoices,
	sendInvoice,
	summarizeInvoice,
} from './invoices.ts'
export { findTransaction, listTransactions, searchTransactions } from './transactions.ts'
export { createPayout, getPayout, getPayoutItem } from './payouts.ts'
export { searchInvoicesForReimbursement } from './reimbursements.ts'
export { smokeTest } from './smoke-test.ts'
export {
	balancesGet,
	invoicesCreate,
	invoicesGet,
	invoicesList,
	invoicesSearchInvoices,
	invoicesSend,
	payoutsCreate,
	payoutsGet,
	payoutsItemGet,
	searchGet,
} from './openapi-client.ts'

import {
	createInvoice,
	findInvoice,
	getInvoice,
	listInvoices,
	searchInvoices,
	sendInvoice,
	summarizeInvoice,
} from './invoices.ts'
import { createPayout, getPayout, getPayoutItem } from './payouts.ts'
import { parseAction, paypalListBalances } from './paypal-core.ts'
import { searchInvoicesForReimbursement } from './reimbursements.ts'
import { smokeTest } from './smoke-test.ts'
import { findTransaction, listTransactions, searchTransactions } from './transactions.ts'

const actions = {
	'smoke-test': smokeTest,
	'list-invoices': listInvoices,
	'get-invoice': getInvoice,
	'search-invoices': searchInvoices,
	'find-invoice': findInvoice,
	'summarize-invoice': summarizeInvoice,
	'create-invoice': createInvoice,
	'send-invoice': sendInvoice,
	'list-transactions': listTransactions,
	'search-transactions': searchTransactions,
	'find-transaction': findTransaction,
	'list-balances': paypalListBalances,
	'search-reimbursement': searchInvoicesForReimbursement,
	'search-invoices-for-reimbursement': searchInvoicesForReimbursement,
	'create-payout': createPayout,
	'get-payout': getPayout,
	'get-payout-item': getPayoutItem,
} as const

export type PayPalAction = keyof typeof actions

const actionNames = Object.keys(actions) as PayPalAction[]

/**
 * Root dispatcher for PayPal helpers. Defaults to the read-only smoke test.
 * @example
 * import paypal from 'kody:@kody/paypal'
 * const result = await paypal({ action: 'list-invoices', pageSize: 5 })
 */
export default async function paypal(input: Record<string, unknown> = {}) {
	const action = parseAction(input.action, actionNames, 'smoke-test', 'PayPal')
	const handler = actions[action]
	return await handler(input as never)
}