← Public packages
@kody/api-research
Research third-party APIs: registry search, provider discovery, OpenAPI summarize, and client scaffold.
src/smoke-test.ts
52 lines · 1.4 KB · TypeScriptimport searchRegistry from './search-registry.ts'
import { parseOpenApiSpec } from './parse-spec-lib.ts'
import { summarizeOpenApiSpec } from './summarize-spec-lib.ts'
const PING_SPEC = {
openapi: '3.0.3',
info: { title: 'Smoke API', version: '1.0.0' },
servers: [{ url: 'https://example.com' }],
paths: {
'/ping': {
get: {
operationId: 'ping',
summary: 'Ping',
responses: { '200': { description: 'ok' } },
},
},
},
}
/**
* Prove registry search and local OpenAPI parse/summarize without mutating anything.
* Use after publish to confirm the library exports still work.
*
* @returns Registry hit count plus a parsed ping-spec summary
*
* @example
* import smokeTest from 'kody:@kody/api-research/smoke-test'
* const result = await smokeTest()
*/
export default async function smokeTest(): Promise<{
ok: boolean
registryHits: number
sampleDomain: string | null
parsedTitle: string | null
operationSlugs: Array<string>
}> {
const registry = await searchRegistry({ query: 'github', limit: 3 })
const parsed = parseOpenApiSpec(JSON.stringify(PING_SPEC))
const summary = summarizeOpenApiSpec(parsed)
const ok =
registry.results.length > 0 &&
parsed.operations.length === 1 &&
summary.operations[0]?.slug === 'ping'
return {
ok,
registryHits: registry.results.length,
sampleDomain: registry.results[0]?.domain ?? null,
parsedTitle: parsed.title,
operationSlugs: summary.operations.map((operation) => operation.slug),
}
}