Skip to content
← Public packages

@kentcdodds/kit

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

src/smoke-test.js

43 lines · 1.3 KB · JavaScript
import {
	broadcastSummary,
	callParsed,
	getCurrentAccount,
	getV4Broadcasts,
} from './kit-client.js'

/**
 * Read-only smoke: current account + one page of broadcasts.
 * Never creates or sends broadcasts/emails.
 * Run this first to confirm the `kitApiKey` secret and `api.kit.com` host
 * approval work before doing any writes.
 *
 * @example
 * import smokeTest from 'kody:@kentcdodds/kit/smoke-test'
 * const result = await smokeTest()
 * // => { ok: true, account: { name: '...' }, broadcastCount: 5 }
 */
export default async function smokeTest() {
	const accountBody = await getCurrentAccount()
	const account = /** @type {{ account?: Record<string, unknown> }} */ (accountBody).account
	const page = await callParsed(
		getV4Broadcasts,
		{ query: { per_page: 5 } },
		{ method: 'GET', path: '/v4/broadcasts' },
	)
	const broadcasts = Array.isArray(
		/** @type {{ broadcasts?: unknown[] }} */ (page).broadcasts,
	)
		? /** @type {{ broadcasts: Record<string, unknown>[] }} */ (page).broadcasts
		: []
	const summaries = broadcasts.map((b) => broadcastSummary(b)).filter(Boolean)
	return {
		ok: true,
		account: {
			id: account?.id ?? null,
			name: account?.name ?? null,
			plan_type: account?.plan_type ?? null,
		},
		broadcastCount: summaries.length,
		sampleBroadcast: summaries[0] ?? null,
	}
}