mirror of
https://github.com/Snigdha-OS/documentation.git
synced 2025-09-14 20:24:56 +02:00
91 lines
3.7 KiB
JavaScript
91 lines
3.7 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 });
|
|
exports.validateThemeConfig = void 0;
|
|
const tslib_1 = require("tslib");
|
|
const path_1 = tslib_1.__importDefault(require("path"));
|
|
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
|
|
const lodash_1 = tslib_1.__importDefault(require("lodash"));
|
|
const logger_1 = tslib_1.__importDefault(require("@docusaurus/logger"));
|
|
const eta_1 = require("eta");
|
|
const utils_1 = require("@docusaurus/utils");
|
|
const theme_translations_1 = require("@docusaurus/theme-translations");
|
|
const opensearch_1 = tslib_1.__importDefault(require("./templates/opensearch"));
|
|
const getCompiledOpenSearchTemplate = lodash_1.default.memoize(() => (0, eta_1.compile)(opensearch_1.default.trim()));
|
|
function renderOpenSearchTemplate(data) {
|
|
const compiled = getCompiledOpenSearchTemplate();
|
|
return compiled(data, eta_1.defaultConfig);
|
|
}
|
|
const OPEN_SEARCH_FILENAME = 'opensearch.xml';
|
|
function themeSearchAlgolia(context) {
|
|
const { baseUrl, siteConfig: { title, url, favicon, themeConfig }, i18n: { currentLocale }, } = context;
|
|
const { algolia: { searchPagePath }, } = themeConfig;
|
|
return {
|
|
name: 'docusaurus-theme-search-algolia',
|
|
getThemePath() {
|
|
return '../lib/theme';
|
|
},
|
|
getTypeScriptThemePath() {
|
|
return '../src/theme';
|
|
},
|
|
getDefaultCodeTranslationMessages() {
|
|
return (0, theme_translations_1.readDefaultCodeTranslationMessages)({
|
|
locale: currentLocale,
|
|
name: 'theme-search-algolia',
|
|
});
|
|
},
|
|
contentLoaded({ actions: { addRoute } }) {
|
|
if (searchPagePath) {
|
|
addRoute({
|
|
path: (0, utils_1.normalizeUrl)([baseUrl, searchPagePath]),
|
|
component: '@theme/SearchPage',
|
|
exact: true,
|
|
});
|
|
}
|
|
},
|
|
async postBuild({ outDir }) {
|
|
if (searchPagePath) {
|
|
const siteUrl = (0, utils_1.normalizeUrl)([url, baseUrl]);
|
|
try {
|
|
await fs_extra_1.default.writeFile(path_1.default.join(outDir, OPEN_SEARCH_FILENAME), renderOpenSearchTemplate({
|
|
title,
|
|
siteUrl,
|
|
searchUrl: (0, utils_1.normalizeUrl)([siteUrl, searchPagePath]),
|
|
faviconUrl: favicon ? (0, utils_1.normalizeUrl)([siteUrl, favicon]) : null,
|
|
}));
|
|
}
|
|
catch (err) {
|
|
logger_1.default.error('Generating OpenSearch file failed.');
|
|
throw err;
|
|
}
|
|
}
|
|
},
|
|
injectHtmlTags() {
|
|
if (!searchPagePath) {
|
|
return {};
|
|
}
|
|
return {
|
|
headTags: [
|
|
{
|
|
tagName: 'link',
|
|
attributes: {
|
|
rel: 'search',
|
|
type: 'application/opensearchdescription+xml',
|
|
title,
|
|
href: (0, utils_1.normalizeUrl)([baseUrl, OPEN_SEARCH_FILENAME]),
|
|
},
|
|
},
|
|
],
|
|
};
|
|
},
|
|
};
|
|
}
|
|
exports.default = themeSearchAlgolia;
|
|
var validateThemeConfig_1 = require("./validateThemeConfig");
|
|
Object.defineProperty(exports, "validateThemeConfig", { enumerable: true, get: function () { return validateThemeConfig_1.validateThemeConfig; } });
|