@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.
36 lines (23 loc) • 829 B
text/typescript
/* eslint-disable no-console */
import {APIDocument} from '@sanity/tsdoc'
import {evaluate, parse} from 'groq-js'
import {createTSDocStore} from './TSDocStore'
import {TSDocStore} from './types'
const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms))
const DEBUG = false
/** @beta */
export function createTSDocMemoryStore({docs}: {docs: APIDocument[]}): TSDocStore {
const query = async (q: string, params: Record<string, unknown>) => {
await delay(0)
const tree = parse(q)
const queryId = String(Math.random())
if (DEBUG) console.time(`query:${queryId}`)
const value = await evaluate(tree, {
dataset: docs,
params,
})
if (DEBUG) console.timeEnd(`query:${queryId}`)
return await value.get()
}
return createTSDocStore({debug: DEBUG, query})
}