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.

50 lines (41 loc) 1.3 kB
import {TSDocAppParams} from '@sanity/tsdoc/store' /** @beta */ export function parsePath( path: string, options: {basePath?: string; version?: string} = {}, ): TSDocAppParams { const {basePath = '', version = '0.0.0'} = options const baseSegments = basePath.split('/').filter(Boolean) const segments = path.split('/').filter(Boolean).slice(baseSegments.length) let packageScope: string | null = null let packageName: string | null = null let releaseVersion: string | null = null let exportPath: string | null = null let memberSlug: string | null = null packageName = segments.shift() || null if (packageName?.startsWith('@')) { packageScope = packageName packageName = segments.shift() || null } if (packageName) { releaseVersion = version } if (releaseVersion) { if (segments.length > 1) { memberSlug = segments.pop() || null exportPath = `./${segments.join('/')}` } else if (segments.length === 1) { // needs to be this since if the last element is popped then the export path needs to be "empty" memberSlug = segments.pop() || null exportPath = `.` } } const params: TSDocAppParams = { exportPath, packageName, packageScope, releaseVersion, memberSlug, } return params }