mirror of
https://github.com/Snigdha-OS/documentation.git
synced 2025-09-11 20:04:55 +02:00
64 lines
3.2 KiB
JavaScript
64 lines
3.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 });
|
|
exports.validateBlogPostFrontMatter = void 0;
|
|
const utils_validation_1 = require("@docusaurus/utils-validation");
|
|
const BlogPostFrontMatterAuthorSchema = utils_validation_1.JoiFrontMatter.object({
|
|
key: utils_validation_1.JoiFrontMatter.string(),
|
|
name: utils_validation_1.JoiFrontMatter.string(),
|
|
title: utils_validation_1.JoiFrontMatter.string(),
|
|
url: utils_validation_1.URISchema,
|
|
imageURL: utils_validation_1.JoiFrontMatter.string(),
|
|
})
|
|
.or('key', 'name', 'imageURL')
|
|
.rename('image_url', 'imageURL', { alias: true });
|
|
const FrontMatterAuthorErrorMessage = '{{#label}} does not look like a valid blog post author. Please use an author key or an author object (with a key and/or name).';
|
|
const BlogFrontMatterSchema = utils_validation_1.JoiFrontMatter.object({
|
|
id: utils_validation_1.JoiFrontMatter.string(),
|
|
title: utils_validation_1.JoiFrontMatter.string().allow(''),
|
|
description: utils_validation_1.JoiFrontMatter.string().allow(''),
|
|
tags: utils_validation_1.FrontMatterTagsSchema,
|
|
date: utils_validation_1.JoiFrontMatter.date().raw(),
|
|
// New multi-authors front matter:
|
|
authors: utils_validation_1.JoiFrontMatter.alternatives()
|
|
.try(utils_validation_1.JoiFrontMatter.string(), BlogPostFrontMatterAuthorSchema, utils_validation_1.JoiFrontMatter.array()
|
|
.items(utils_validation_1.JoiFrontMatter.string(), BlogPostFrontMatterAuthorSchema)
|
|
.messages({
|
|
'array.sparse': FrontMatterAuthorErrorMessage,
|
|
'array.includes': FrontMatterAuthorErrorMessage,
|
|
}))
|
|
.messages({
|
|
'alternatives.match': FrontMatterAuthorErrorMessage,
|
|
}),
|
|
// Legacy author front matter
|
|
author: utils_validation_1.JoiFrontMatter.string(),
|
|
author_title: utils_validation_1.JoiFrontMatter.string(),
|
|
author_url: utils_validation_1.URISchema,
|
|
author_image_url: utils_validation_1.URISchema,
|
|
// TODO enable deprecation warnings later
|
|
authorURL: utils_validation_1.URISchema,
|
|
// .warning('deprecate.error', { alternative: '"author_url"'}),
|
|
authorTitle: utils_validation_1.JoiFrontMatter.string(),
|
|
// .warning('deprecate.error', { alternative: '"author_title"'}),
|
|
authorImageURL: utils_validation_1.URISchema,
|
|
// .warning('deprecate.error', { alternative: '"author_image_url"'}),
|
|
slug: utils_validation_1.JoiFrontMatter.string(),
|
|
image: utils_validation_1.URISchema,
|
|
keywords: utils_validation_1.JoiFrontMatter.array().items(utils_validation_1.JoiFrontMatter.string().required()),
|
|
hide_table_of_contents: utils_validation_1.JoiFrontMatter.boolean(),
|
|
...utils_validation_1.FrontMatterTOCHeadingLevels,
|
|
})
|
|
.messages({
|
|
'deprecate.error': '{#label} blog frontMatter field is deprecated. Please use {#alternative} instead.',
|
|
})
|
|
.concat(utils_validation_1.ContentVisibilitySchema);
|
|
function validateBlogPostFrontMatter(frontMatter) {
|
|
return (0, utils_validation_1.validateFrontMatter)(frontMatter, BlogFrontMatterSchema);
|
|
}
|
|
exports.validateBlogPostFrontMatter = validateBlogPostFrontMatter;
|