mirror of
https://github.com/facebook/docusaurus.git
synced 2025-12-30 22:23:00 +00:00
* POC of contextual search dynamic filters * fix useSearchTags bugs * contextual search should use preferred version (persisted in storage) * Contextual search: make system decoupled from algolia + wire proper meta tags and facet filters * rework doc tag + minor refactorings * update snapshots * polish contextual search * add Algolia validateThemeConfig tests
58 lines
1.7 KiB
JavaScript
58 lines
1.7 KiB
JavaScript
/**
|
|
* 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.
|
|
*/
|
|
|
|
const Joi = require('@hapi/joi');
|
|
|
|
const DEFAULT_CONFIG = {
|
|
contextualSearch: false, // future: maybe we want to enable this by default
|
|
|
|
// By default, all Docusaurus sites are using the same AppId
|
|
// This has been designed on purpose with Algolia.
|
|
appId: 'BH4D9OD16A',
|
|
|
|
searchParameters: {},
|
|
};
|
|
exports.DEFAULT_CONFIG = DEFAULT_CONFIG;
|
|
|
|
const Schema = Joi.object({
|
|
algolia: Joi.object({
|
|
// Docusaurus attributes
|
|
contextualSearch: Joi.boolean().default(DEFAULT_CONFIG.contextualSearch),
|
|
|
|
// Algolia attributes
|
|
appId: Joi.string().default(DEFAULT_CONFIG.appId),
|
|
apiKey: Joi.string().required(),
|
|
indexName: Joi.string().required(),
|
|
searchParameters: Joi.object()
|
|
.default(DEFAULT_CONFIG.searchParameters)
|
|
.unknown(),
|
|
})
|
|
.label('themeConfig.algolia')
|
|
.required()
|
|
.unknown(), // DocSearch 3 is still alpha: don't validate the rest for now
|
|
});
|
|
exports.Schema = Schema;
|
|
|
|
exports.validateThemeConfig = function validateThemeConfig({
|
|
validate,
|
|
themeConfig,
|
|
}) {
|
|
const normalizedThemeConfig = validate(Schema, themeConfig);
|
|
|
|
if (
|
|
normalizedThemeConfig &&
|
|
normalizedThemeConfig.algolia.contextualSearch &&
|
|
normalizedThemeConfig.algolia.searchParameters &&
|
|
normalizedThemeConfig.algolia.searchParameters.facetFilters
|
|
) {
|
|
throw new Error(
|
|
'If you are using algolia.contextualSearch: true, you should not provide algolia.searchParameters.facetFilters, as it is computed for you dynamically',
|
|
);
|
|
}
|
|
return normalizedThemeConfig;
|
|
};
|