mirror of
https://github.com/Snigdha-OS/documentation.git
synced 2025-09-13 20:14:56 +02:00
57 lines
2.2 KiB
JavaScript
57 lines
2.2 KiB
JavaScript
"use strict";
|
|
/**
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const sitemap_1 = require("sitemap");
|
|
const utils_common_1 = require("@docusaurus/utils-common");
|
|
const utils_1 = require("@docusaurus/utils");
|
|
function isNoIndexMetaRoute({ head, route, }) {
|
|
const isNoIndexMetaTag = ({ name, content, }) => {
|
|
if (!name || !content) {
|
|
return false;
|
|
}
|
|
return (
|
|
// meta name is not case-sensitive
|
|
name.toLowerCase() === 'robots' &&
|
|
// Robots directives are not case-sensitive
|
|
content.toLowerCase().includes('noindex'));
|
|
};
|
|
// https://github.com/staylor/react-helmet-async/pull/167
|
|
const meta = head[route]?.meta.toComponent();
|
|
return meta?.some((tag) => isNoIndexMetaTag({ name: tag.props.name, content: tag.props.content }));
|
|
}
|
|
async function createSitemap(siteConfig, routesPaths, head, options) {
|
|
const { url: hostname } = siteConfig;
|
|
if (!hostname) {
|
|
throw new Error('URL in docusaurus.config.js cannot be empty/undefined.');
|
|
}
|
|
const { changefreq, priority, ignorePatterns } = options;
|
|
const ignoreMatcher = (0, utils_1.createMatcher)(ignorePatterns);
|
|
function isRouteExcluded(route) {
|
|
return (route.endsWith('404.html') ||
|
|
ignoreMatcher(route) ||
|
|
isNoIndexMetaRoute({ head, route }));
|
|
}
|
|
const includedRoutes = routesPaths.filter((route) => !isRouteExcluded(route));
|
|
if (includedRoutes.length === 0) {
|
|
return null;
|
|
}
|
|
const sitemapStream = new sitemap_1.SitemapStream({ hostname });
|
|
includedRoutes.forEach((routePath) => sitemapStream.write({
|
|
url: (0, utils_common_1.applyTrailingSlash)(routePath, {
|
|
trailingSlash: siteConfig.trailingSlash,
|
|
baseUrl: siteConfig.baseUrl,
|
|
}),
|
|
changefreq,
|
|
priority,
|
|
}));
|
|
sitemapStream.end();
|
|
const generatedSitemap = (await (0, sitemap_1.streamToPromise)(sitemapStream)).toString();
|
|
return generatedSitemap;
|
|
}
|
|
exports.default = createSitemap;
|