import { parseAction } from './types.ts' import { accounts } from './accounts.ts' import { getAccount, getAccountEmailStats, getAccountGrowthStats } from './account.ts' import { request } from './request.ts' import { createSubscriber, getSubscriber, getSubscriberByEmail, listSubscriberTags, listSubscribers, subscribeAndTag, unsubscribeSubscriber, updateSubscriber, } from './subscribers.ts' import { createTag, ensureTag, listTagSubscribers, listTags, tagSubscriber, untagSubscriber, } from './tags.ts' import { addSubscriberToForm, listForms, listSegments } from './forms.ts' import { createBroadcastDraft, deleteBroadcast, getBroadcast, getBroadcastStats, listBroadcasts, updateBroadcast, } from './broadcasts.ts' import { addSubscriberToSequence, createSequence, createSequenceEmail, getSequence, getSequenceEmail, listSequenceEmails, listSequences, updateSequenceEmail, } from './sequences.ts' import { smokeTest } from './smoke-test.ts' import { API_KEY_SETUP_URL, DEFAULT_API_KEY_SECRET, DEFAULT_INTEGRATION_NAME, DEFAULT_OAUTH_SCOPES, KIT_API_BASE_URL, KIT_CALLBACK_URL, KIT_REQUIRED_HOSTS, KIT_SCOPES, OAUTH_CONNECT_URL, } from './setup.ts' export { API_KEY_SETUP_URL, DEFAULT_API_KEY_SECRET, DEFAULT_INTEGRATION_NAME, DEFAULT_OAUTH_SCOPES, KIT_API_BASE_URL, KIT_CALLBACK_URL, KIT_REQUIRED_HOSTS, KIT_SCOPES, OAUTH_CONNECT_URL, } export { KitApiError } from './client.ts' export { mutationPreview, rejectBroadcastSend } from './safety.ts' export { accounts } from './accounts.ts' export { getAccount, getAccountEmailStats, getAccountGrowthStats } from './account.ts' export { request } from './request.ts' export { createSubscriber, getSubscriber, getSubscriberByEmail, listSubscriberTags, listSubscribers, subscribeAndTag, subscriberSummary, unsubscribeSubscriber, updateSubscriber, } from './subscribers.ts' export { createTag, ensureTag, listTagSubscribers, listTags, tagSubscriber, tagSummary, untagSubscriber, } from './tags.ts' export { addSubscriberToForm, listForms, listSegments } from './forms.ts' export { broadcastSummary, createBroadcastDraft, deleteBroadcast, getBroadcast, getBroadcastStats, listBroadcasts, updateBroadcast, } from './broadcasts.ts' export { addSubscriberToSequence, createSequence, createSequenceEmail, getSequence, getSequenceEmail, listSequenceEmails, listSequences, updateSequenceEmail, } from './sequences.ts' export { buildLinkedImage, buildLinkedImageBlock, buildLiquidGreeting, buildParagraph, buildUnorderedList, joinEmailBlocks, } from './html.ts' export { smokeTest } from './smoke-test.ts' const actions = { 'smoke-test': smokeTest, accounts, account: getAccount, 'account-email-stats': getAccountEmailStats, 'account-growth-stats': getAccountGrowthStats, request, 'list-subscribers': listSubscribers, 'get-subscriber': getSubscriber, 'get-subscriber-by-email': getSubscriberByEmail, 'create-subscriber': createSubscriber, 'update-subscriber': updateSubscriber, 'unsubscribe-subscriber': unsubscribeSubscriber, 'list-subscriber-tags': listSubscriberTags, 'subscribe-and-tag': subscribeAndTag, 'list-tags': listTags, 'create-tag': createTag, 'ensure-tag': ensureTag, 'tag-subscriber': tagSubscriber, 'untag-subscriber': untagSubscriber, 'list-tag-subscribers': listTagSubscribers, 'list-forms': listForms, 'add-subscriber-to-form': addSubscriberToForm, 'list-segments': listSegments, 'list-broadcasts': listBroadcasts, 'get-broadcast': getBroadcast, 'broadcast-stats': getBroadcastStats, 'create-broadcast-draft': createBroadcastDraft, 'update-broadcast': updateBroadcast, 'delete-broadcast': deleteBroadcast, 'list-sequences': listSequences, 'get-sequence': getSequence, 'create-sequence': createSequence, 'list-sequence-emails': listSequenceEmails, 'create-sequence-email': createSequenceEmail, 'get-sequence-email': getSequenceEmail, 'update-sequence-email': updateSequenceEmail, 'add-subscriber-to-sequence': addSubscriberToSequence, } as const export type KitAction = keyof typeof actions const actionNames = Object.keys(actions) as Array /** * Root dispatcher for Kit helpers. Defaults to the read-only smoke test. * Broadcast helpers are draft-only and never send. * @example * import kit from 'kody:@kody/kit' * const result = await kit({ action: 'smoke-test' }) */ export default async function kit(input: Record = {}) { const action = parseAction(input.action, actionNames, 'smoke-test', 'Kit') const handler = actions[action] return await handler(input as never) }