UNPKG

@sanity/tsdoc

Version:

Generate API reference docs from TypeScript projects and store in a Sanity-friendly JSON format. Render a static frontend, or as React components.

52 lines (43 loc) 1.13 kB
import {createClient, SanityDocument} from '@sanity/client' import mkdirp from 'mkdirp' import path from 'path' import {APIDocument} from '../types' import {writeFile} from './helpers' /** * @public */ export async function load( transformed: APIDocument[], opts: { cwd: string fs?: {path: string} sanity?: {projectId?: string; dataset?: string; token?: string} }, ): Promise<void> { // Write to file system if (opts.fs) { const dirPath = path.dirname(opts.fs.path) await mkdirp(dirPath) await writeFile(opts.fs.path, JSON.stringify(transformed, null, 2) + '\n') } // Write to Sanity if (opts.sanity && opts.sanity.token) { await _loadToSanity(opts.sanity, transformed) } } async function _loadToSanity( sanity: {projectId?: string; dataset?: string; token?: string}, docs: APIDocument[], ): Promise<void> { const client = createClient({ ...sanity, apiVersion: '2022-10-01', token: sanity.token, useCdn: false, }) let tx = client.transaction() for (const doc of docs) { tx = tx.createOrReplace(doc as SanityDocument) } await tx.commit() }