UNPKG

@mintlify/scraping

Version:

Scrape documentation frameworks to Mintlify docs

46 lines 1.75 kB
const KIND_DIRS = { class: 'classes', interface: 'interfaces', enum: 'enums', function: 'functions', type: 'types', variable: 'variables', method: 'methods', property: 'properties', }; export function matchesSdkPageTarget(pageTarget, target) { if (!pageTarget) return false; if (pageTarget.kind !== target.kind || pageTarget.name !== target.name) return false; if (target.parent) return pageTarget.parent === target.parent; return pageTarget.parent === undefined; } function matchesSdkPageHeuristic(page, target) { if (target.parent) { return (page.title === `${target.parent}.${target.name}` || page.slug.endsWith(`/${slugify(target.parent)}/${slugify(target.name)}`)); } // Only slug matches encode the symbol kind; a bare title match could return // a same-named symbol of a different kind. const dir = KIND_DIRS[target.kind]; return (page.slug === `${dir}/${slugify(target.name)}` || page.slug.endsWith(`/${dir}/${slugify(target.name)}`)); } function slugify(name) { return name.replace(/[^a-zA-Z0-9-_.]+/g, '-').replace(/^-+|-+$/g, '') || 'item'; } export function findSdkPage(reference, target) { return (reference.pages.find((page) => matchesSdkPageTarget(page.target, target)) ?? reference.pages.find((page) => matchesSdkPageHeuristic(page, target))); } export function renderSdkTarget(reference, target) { const page = findSdkPage(reference, target); if (!page) { const qualified = target.parent ? `${target.parent}.${target.name}` : target.name; throw new Error(`SDK symbol not found: ${target.kind} ${qualified}`); } return page; } //# sourceMappingURL=findSdkPage.js.map