Skip to content
← Public packages

@kentcdodds/kit

Kit.com helpers for subscribers, tags, forms, sequences, and broadcasts.

src/named.js

114 lines · 2.8 KB · JavaScript
/**
 * Named Kit.com helpers: OpenAPI-scaffolded transport plus domain helpers for
 * broadcasts, sequence emails, and repo-style HTML builders.
 * Prefer focused paths (`./create-broadcast-draft`, `./subscribe-and-tag`,
 * `./list-broadcasts`) when one of those is enough. Root `.` is draft-only
 * `createBroadcastDraft`.
 *
 * **Draft-only:** no export sends, schedules, or publishes a broadcast — a
 * human sends drafts from the Kit UI via the returned `editUrl`. The only
 * destructive export is `deleteBroadcast`.
 *
 * @example
 * import { createBroadcastDraft, buildParagraph, joinEmailBlocks } from 'kody:@kentcdodds/kit/named'
 * const draft = await createBroadcastDraft({
 *   subject: 'Workshop reminder',
 *   content: joinEmailBlocks([buildParagraph('See you tomorrow!')]),
 * })
 * // => { id: 123, subject: '...', editUrl: 'https://app.kit.com/campaigns/123/draft' }
 */
export {
	KIT_API_BASE_URL,
	KIT_SECRET_NAME,
	KIT_TEMPLATES,
	KIT_MUTE_TAGS,
	BWK_YOUTUBE_BROADCAST_DEFAULTS,
	EPE_SEQUENCE_ID,
	KitApiError,
	parseOkJson,
	callParsed,
	listAll,
	broadcastSummary,
	sequenceEmailSummary,
	getCurrentAccount,
	getAccountEmailStats,
	getAccountGrowthStats,
	getBroadcastStats,
	getBroadcastsStats,
	listSequences,
	getSequence,
	listSequenceEmails,
} from './kit-client.js'

export {
	buildLiquidGreeting,
	buildParagraph,
	buildLinkedImage,
	buildWorkshopImageBlock,
	buildUnorderedList,
	joinEmailBlocks,
} from './html.js'

export {
	createBroadcastDraft,
	createBwkYoutubeBroadcastDraft,
	updateBroadcast,
	getBroadcast,
	listBroadcasts,
	deleteBroadcast,
} from './broadcasts.js'

export {
	createSequence,
	createSequenceEmail,
	addSubscriberToSequence,
	getSequenceEmail,
	updateSequenceEmail,
	publishSequenceEmail,
} from './sequence-emails.js'

export {
	subscriberSummary,
	createSubscriber,
	getSubscriber,
	getSubscriberByEmail,
	updateSubscriber,
	unsubscribeSubscriber,
	listSubscribers,
	listSubscriberTags,
	listTags,
	createTag,
	ensureTag,
	tagSubscriberByEmail,
	untagSubscriber,
	listTagSubscribers,
	subscribeAndTag,
	listForms,
	addSubscriberToForm,
	listSegments,
} from './subscribers.js'

/**
 * Named Kit.com helpers (HTML, broadcasts, subscribers, sequences, constants).
 * Prefer focused paths when one exists; root `.` is draft-only createBroadcastDraft.
 *
 * @returns Short map of this barrel vs focused paths
 *
 * @example
 * import describeNamed from 'kody:@kentcdodds/kit/named'
 * const info = await describeNamed()
 * // => { root: 'createBroadcastDraft', prefer: ['create-broadcast-draft', ...] }
 */
export default async function describeKitNamed() {
	return {
		root: 'createBroadcastDraft',
		prefer: ['create-broadcast-draft', 'subscribe-and-tag', 'list-broadcasts'],
		named: [
			'HTML builders',
			'broadcasts',
			'subscribers/tags/forms/segments',
			'sequences',
			'constants',
		],
	}
}