@mintlify/scraping
Version:
Scrape documentation frameworks to Mintlify docs
60 lines • 2.43 kB
JavaScript
import { visit, EXIT, CONTINUE } from 'unist-util-visit';
import { log } from './log.js';
export const framework = {
vendor: undefined,
version: undefined,
};
export function detectFramework(rootHast) {
visit(rootHast, 'element', function (node) {
if (node.tagName === 'link' &&
Array.isArray(node.properties.rel) &&
node.properties.rel.includes('preconnect') &&
node.properties.href === 'https://api.gitbook.com') {
framework.vendor = 'gitbook';
framework.version = undefined;
return EXIT;
}
// All of the other docs vendors rely on
// the `meta` element as well as a `name`
// property which should be a string
if (node.tagName !== 'meta' || typeof node.properties.name !== 'string')
return CONTINUE;
switch (node.properties.name) {
case 'readme-deploy':
framework.vendor = 'readme';
framework.version = undefined;
return EXIT;
// case "intercom: trackingEvent":
// framework.vendor = "intercom";
// framework.version = undefined;
// return EXIT;
case 'generator':
if (typeof node.properties.content === 'string' &&
node.properties.content.includes('Docusaurus')) {
framework.vendor = 'docusaurus';
const meta = node.properties.content;
if (meta.includes('v3')) {
framework.version = 3;
}
else if (meta.includes('v2')) {
framework.version = 2;
}
else if (meta.includes('v1')) {
log('We detected Docusaurus version 1 but we only support scraping versions 2 and 3', 'error');
framework.vendor = undefined;
framework.version = undefined;
}
return EXIT;
}
}
});
if (framework.vendor) {
log('Successfully detected documentation vendor: ' + framework.vendor);
}
else {
log('Failed to detect documentation vendor; please contact support@mintlify.com');
framework.version = undefined;
process.exit(1);
}
}
//# sourceMappingURL=detectFramework.js.map