@docusaurus/plugin-content-docs 2.0.0-beta.ff31de0ff → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/categoryGeneratedIndex.d.ts +12 -0
- package/lib/categoryGeneratedIndex.js +37 -0
- package/lib/cli.d.ts +3 -2
- package/lib/cli.js +62 -72
- package/lib/client/docsClientUtils.d.ts +9 -28
- package/lib/client/docsClientUtils.js +35 -51
- package/lib/client/index.d.ts +81 -0
- package/lib/client/index.js +67 -0
- package/lib/constants.d.ts +4 -0
- package/lib/constants.js +4 -1
- package/lib/docs.d.ts +35 -8
- package/lib/docs.js +211 -78
- package/{src/__tests__/__fixtures__/site-with-autogenerated-sidebar/partialAutogeneratedSidebars2.js → lib/frontMatter.d.ts} +4 -10
- package/lib/frontMatter.js +53 -0
- package/lib/globalData.d.ts +3 -3
- package/lib/globalData.js +35 -6
- package/lib/index.d.ts +3 -3
- package/lib/index.js +137 -146
- package/lib/lastUpdate.d.ts +4 -6
- package/lib/lastUpdate.js +22 -26
- package/lib/markdown/index.d.ts +3 -6
- package/lib/markdown/index.js +3 -3
- package/lib/markdown/linkify.d.ts +1 -1
- package/lib/markdown/linkify.js +7 -4
- package/lib/numberPrefix.d.ts +1 -1
- package/lib/numberPrefix.js +16 -21
- package/lib/options.d.ts +3 -5
- package/lib/options.js +57 -29
- package/lib/props.d.ts +7 -2
- package/lib/props.js +87 -16
- package/lib/routes.d.ts +29 -0
- package/lib/routes.js +96 -0
- package/lib/server-export.d.ts +9 -0
- package/lib/server-export.js +25 -0
- package/lib/{sidebarItemsGenerator.d.ts → sidebars/generator.d.ts} +1 -6
- package/lib/sidebars/generator.js +209 -0
- package/lib/sidebars/index.d.ts +13 -0
- package/lib/sidebars/index.js +92 -0
- package/lib/sidebars/normalization.d.ts +13 -0
- package/lib/sidebars/normalization.js +59 -0
- package/lib/sidebars/postProcessor.d.ts +11 -0
- package/lib/sidebars/postProcessor.js +81 -0
- package/lib/sidebars/processor.d.ts +10 -0
- package/lib/sidebars/processor.js +79 -0
- package/lib/sidebars/types.d.ts +183 -0
- package/{types.d.ts → lib/sidebars/types.js} +2 -7
- package/lib/sidebars/utils.d.ts +55 -0
- package/lib/sidebars/utils.js +259 -0
- package/lib/sidebars/validation.d.ts +11 -0
- package/lib/sidebars/validation.js +143 -0
- package/lib/slug.d.ts +5 -4
- package/lib/slug.js +29 -19
- package/{src/__tests__/__fixtures__/sidebars/sidebars-first-level-not-category.js → lib/tags.d.ts} +3 -14
- package/lib/tags.js +21 -0
- package/lib/translations.d.ts +3 -3
- package/lib/translations.js +100 -93
- package/lib/types.d.ts +13 -172
- package/lib/versions/files.d.ts +50 -0
- package/lib/versions/files.js +141 -0
- package/lib/versions/index.d.ts +36 -0
- package/lib/versions/index.js +154 -0
- package/lib/versions/validation.d.ts +17 -0
- package/lib/versions/validation.js +71 -0
- package/package.json +44 -29
- package/src/categoryGeneratedIndex.ts +60 -0
- package/src/cli.ts +94 -114
- package/src/client/docsClientUtils.ts +47 -84
- package/src/client/index.ts +158 -0
- package/src/constants.ts +4 -2
- package/src/docs.ts +294 -78
- package/src/frontMatter.ts +63 -0
- package/src/globalData.ts +57 -7
- package/src/index.ts +200 -204
- package/src/lastUpdate.ts +27 -34
- package/src/markdown/index.ts +10 -16
- package/src/markdown/linkify.ts +8 -5
- package/src/numberPrefix.ts +19 -26
- package/src/options.ts +61 -43
- package/src/plugin-content-docs.d.ts +575 -78
- package/src/props.ts +128 -23
- package/src/routes.ts +159 -0
- package/src/server-export.ts +26 -0
- package/src/sidebars/README.md +10 -0
- package/src/sidebars/generator.ts +292 -0
- package/src/sidebars/index.ts +118 -0
- package/src/sidebars/normalization.ts +91 -0
- package/src/sidebars/postProcessor.ts +112 -0
- package/src/sidebars/processor.ts +123 -0
- package/src/sidebars/types.ts +280 -0
- package/src/sidebars/utils.ts +393 -0
- package/src/sidebars/validation.ts +179 -0
- package/src/slug.ts +42 -23
- package/src/tags.ts +20 -0
- package/src/translations.ts +155 -124
- package/src/types.ts +17 -234
- package/src/versions/files.ts +216 -0
- package/src/versions/index.ts +246 -0
- package/src/versions/validation.ts +115 -0
- package/lib/.tsbuildinfo +0 -4673
- package/lib/docFrontMatter.d.ts +0 -21
- package/lib/docFrontMatter.js +0 -33
- package/lib/sidebarItemsGenerator.js +0 -211
- package/lib/sidebars.d.ts +0 -42
- package/lib/sidebars.js +0 -309
- package/lib/theme/hooks/useDocs.d.ts +0 -20
- package/lib/theme/hooks/useDocs.js +0 -72
- package/lib/versions.d.ts +0 -16
- package/lib/versions.js +0 -287
- package/src/__tests__/__fixtures__/bad-id-site/docs/invalid-id.md +0 -5
- package/src/__tests__/__fixtures__/bad-slug-on-doc-home-site/docs/docWithSlug.md +0 -5
- package/src/__tests__/__fixtures__/empty-site/docusaurus.config.js +0 -16
- package/src/__tests__/__fixtures__/empty-site/sidebars.json +0 -1
- package/src/__tests__/__fixtures__/sidebars/sidebars-category-shorthand.js +0 -34
- package/src/__tests__/__fixtures__/sidebars/sidebars-category-wrong-items.json +0 -11
- package/src/__tests__/__fixtures__/sidebars/sidebars-category-wrong-label.json +0 -11
- package/src/__tests__/__fixtures__/sidebars/sidebars-category.js +0 -44
- package/src/__tests__/__fixtures__/sidebars/sidebars-collapsed-first-level.json +0 -20
- package/src/__tests__/__fixtures__/sidebars/sidebars-collapsed.json +0 -21
- package/src/__tests__/__fixtures__/sidebars/sidebars-doc-id-not-string.json +0 -10
- package/src/__tests__/__fixtures__/sidebars/sidebars-link-wrong-href.json +0 -11
- package/src/__tests__/__fixtures__/sidebars/sidebars-link-wrong-label.json +0 -11
- package/src/__tests__/__fixtures__/sidebars/sidebars-link.json +0 -11
- package/src/__tests__/__fixtures__/sidebars/sidebars-unknown-type.json +0 -14
- package/src/__tests__/__fixtures__/sidebars/sidebars-wrong-field.json +0 -20
- package/src/__tests__/__fixtures__/sidebars/sidebars.json +0 -20
- package/src/__tests__/__fixtures__/simple-site/docs/foo/bar.md +0 -69
- package/src/__tests__/__fixtures__/simple-site/docs/foo/baz.md +0 -67
- package/src/__tests__/__fixtures__/simple-site/docs/headingAsTitle.md +0 -1
- package/src/__tests__/__fixtures__/simple-site/docs/hello.md +0 -52
- package/src/__tests__/__fixtures__/simple-site/docs/ipsum.md +0 -5
- package/src/__tests__/__fixtures__/simple-site/docs/lorem.md +0 -6
- package/src/__tests__/__fixtures__/simple-site/docs/rootAbsoluteSlug.md +0 -5
- package/src/__tests__/__fixtures__/simple-site/docs/rootRelativeSlug.md +0 -5
- package/src/__tests__/__fixtures__/simple-site/docs/rootResolvedSlug.md +0 -5
- package/src/__tests__/__fixtures__/simple-site/docs/rootTryToEscapeSlug.md +0 -5
- package/src/__tests__/__fixtures__/simple-site/docs/slugs/absoluteSlug.md +0 -5
- package/src/__tests__/__fixtures__/simple-site/docs/slugs/relativeSlug.md +0 -5
- package/src/__tests__/__fixtures__/simple-site/docs/slugs/resolvedSlug.md +0 -5
- package/src/__tests__/__fixtures__/simple-site/docs/slugs/tryToEscapeSlug.md +0 -5
- package/src/__tests__/__fixtures__/simple-site/docusaurus.config.js +0 -14
- package/src/__tests__/__fixtures__/simple-site/sidebars.json +0 -23
- package/src/__tests__/__fixtures__/simple-site/wrong-sidebars.json +0 -7
- package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/0-getting-started.md +0 -3
- package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/1-installation.md +0 -3
- package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/00_api-overview.md +0 -3
- package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/01_Core APIs/0 --- Client API.md +0 -1
- package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/01_Core APIs/1 --- Server API.md +0 -1
- package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/02_Extension APIs/0. Plugin API.md +0 -1
- package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/02_Extension APIs/1. Theme API.md +0 -1
- package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/02_Extension APIs/_category_.yml +0 -1
- package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/03_api-end.md +0 -3
- package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/_category_.json +0 -3
- package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/0-guide2.5.md +0 -8
- package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/02-guide2.md +0 -7
- package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/_category_.json +0 -3
- package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/a-guide4.md +0 -7
- package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/b-guide5.md +0 -7
- package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/guide3.md +0 -8
- package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/z-guide1.md +0 -8
- package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docusaurus.config.js +0 -14
- package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/partialAutogeneratedSidebars.js +0 -23
- package/src/__tests__/__fixtures__/site-with-doc-label/docs/hello-1.md +0 -7
- package/src/__tests__/__fixtures__/site-with-doc-label/docs/hello-2.md +0 -8
- package/src/__tests__/__fixtures__/site-with-doc-label/docusaurus.config.js +0 -14
- package/src/__tests__/__fixtures__/site-with-doc-label/sidebars.json +0 -14
- package/src/__tests__/__fixtures__/versioned-site/community/team.md +0 -1
- package/src/__tests__/__fixtures__/versioned-site/community_sidebars.json +0 -3
- package/src/__tests__/__fixtures__/versioned-site/community_versioned_docs/version-1.0.0/team.md +0 -1
- package/src/__tests__/__fixtures__/versioned-site/community_versioned_sidebars/version-1.0.0-sidebars.json +0 -3
- package/src/__tests__/__fixtures__/versioned-site/community_versions.json +0 -1
- package/src/__tests__/__fixtures__/versioned-site/docs/foo/bar.md +0 -4
- package/src/__tests__/__fixtures__/versioned-site/docs/hello.md +0 -1
- package/src/__tests__/__fixtures__/versioned-site/docs/slugs/absoluteSlug.md +0 -5
- package/src/__tests__/__fixtures__/versioned-site/docs/slugs/relativeSlug.md +0 -5
- package/src/__tests__/__fixtures__/versioned-site/docs/slugs/resolvedSlug.md +0 -5
- package/src/__tests__/__fixtures__/versioned-site/docs/slugs/tryToEscapeSlug.md +0 -5
- package/src/__tests__/__fixtures__/versioned-site/docusaurus.config.js +0 -18
- package/src/__tests__/__fixtures__/versioned-site/i18n/en/docusaurus-plugin-content-docs/version-1.0.0/hello.md +0 -1
- package/src/__tests__/__fixtures__/versioned-site/i18n/en/docusaurus-plugin-content-docs-community/current/team.md +0 -5
- package/src/__tests__/__fixtures__/versioned-site/i18n/fr/docusaurus-plugin-content-docs/version-1.0.0/hello.md +0 -1
- package/src/__tests__/__fixtures__/versioned-site/sidebars.json +0 -10
- package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.0/foo/bar.md +0 -4
- package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.0/foo/baz.md +0 -1
- package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.0/hello.md +0 -1
- package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.1/foo/bar.md +0 -1
- package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.1/hello.md +0 -1
- package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/rootAbsoluteSlug.md +0 -5
- package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/rootRelativeSlug.md +0 -5
- package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/rootResolvedSlug.md +0 -5
- package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/rootTryToEscapeSlug.md +0 -5
- package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/slugs/absoluteSlug.md +0 -5
- package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/slugs/relativeSlug.md +0 -5
- package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/slugs/resolvedSlug.md +0 -5
- package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/slugs/tryToEscapeSlug.md +0 -5
- package/src/__tests__/__fixtures__/versioned-site/versioned_sidebars/version-1.0.0-sidebars.json +0 -11
- package/src/__tests__/__fixtures__/versioned-site/versioned_sidebars/version-1.0.1-sidebars.json +0 -10
- package/src/__tests__/__fixtures__/versioned-site/versioned_sidebars/version-withSlugs-sidebars.json +0 -5
- package/src/__tests__/__fixtures__/versioned-site/versions.json +0 -5
- package/src/__tests__/__snapshots__/cli.test.ts.snap +0 -90
- package/src/__tests__/__snapshots__/index.test.ts.snap +0 -1907
- package/src/__tests__/__snapshots__/sidebars.test.ts.snap +0 -218
- package/src/__tests__/__snapshots__/translations.test.ts.snap +0 -487
- package/src/__tests__/cli.test.ts +0 -333
- package/src/__tests__/docFrontMatter.test.ts +0 -204
- package/src/__tests__/docs.test.ts +0 -875
- package/src/__tests__/index.test.ts +0 -1831
- package/src/__tests__/lastUpdate.test.ts +0 -68
- package/src/__tests__/numberPrefix.test.ts +0 -199
- package/src/__tests__/options.test.ts +0 -232
- package/src/__tests__/sidebarItemsGenerator.test.ts +0 -336
- package/src/__tests__/sidebars.test.ts +0 -638
- package/src/__tests__/slug.test.ts +0 -109
- package/src/__tests__/translations.test.ts +0 -159
- package/src/__tests__/versions.test.ts +0 -718
- package/src/client/__tests__/docsClientUtils.test.ts +0 -372
- package/src/docFrontMatter.ts +0 -53
- package/src/markdown/__tests__/__fixtures__/docs/doc-localized.md +0 -1
- package/src/markdown/__tests__/__fixtures__/docs/doc1.md +0 -13
- package/src/markdown/__tests__/__fixtures__/docs/doc2.md +0 -12
- package/src/markdown/__tests__/__fixtures__/docs/doc4.md +0 -19
- package/src/markdown/__tests__/__fixtures__/docs/doc5.md +0 -6
- package/src/markdown/__tests__/__fixtures__/docs/subdir/doc3.md +0 -3
- package/src/markdown/__tests__/__fixtures__/versioned_docs/version-1.0.0/doc2.md +0 -7
- package/src/markdown/__tests__/__fixtures__/versioned_docs/version-1.0.0/subdir/doc1.md +0 -3
- package/src/markdown/__tests__/__snapshots__/linkify.test.ts.snap +0 -82
- package/src/markdown/__tests__/linkify.test.ts +0 -190
- package/src/sidebarItemsGenerator.ts +0 -307
- package/src/sidebars.ts +0 -489
- package/src/theme/hooks/useDocs.ts +0 -99
- package/src/versions.ts +0 -511
- package/tsconfig.json +0 -9
package/src/markdown/linkify.ts
CHANGED
|
@@ -5,19 +5,22 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {replaceMarkdownLinks} from '@docusaurus/utils';
|
|
8
|
+
import {replaceMarkdownLinks, getContentPathList} from '@docusaurus/utils';
|
|
9
|
+
import type {DocsMarkdownOption} from '../types';
|
|
11
10
|
|
|
12
11
|
function getVersion(filePath: string, options: DocsMarkdownOption) {
|
|
13
12
|
const versionFound = options.versionsMetadata.find((version) =>
|
|
14
|
-
|
|
13
|
+
getContentPathList(version).some((docsDirPath) =>
|
|
15
14
|
filePath.startsWith(docsDirPath),
|
|
16
15
|
),
|
|
17
16
|
);
|
|
17
|
+
// At this point, this should never happen, because the MDX loaders' paths are
|
|
18
|
+
// literally using the version content paths; but if we allow sourcing content
|
|
19
|
+
// from outside the docs directory (through the `include` option, for example;
|
|
20
|
+
// is there a compelling use-case?), this would actually be testable
|
|
18
21
|
if (!versionFound) {
|
|
19
22
|
throw new Error(
|
|
20
|
-
`Unexpected
|
|
23
|
+
`Unexpected error: Markdown file at "${filePath}" does not belong to any docs version!`,
|
|
21
24
|
);
|
|
22
25
|
}
|
|
23
26
|
return versionFound;
|
package/src/numberPrefix.ts
CHANGED
|
@@ -5,43 +5,36 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import {NumberPrefixParser} from '
|
|
8
|
+
import type {NumberPrefixParser} from '@docusaurus/plugin-content-docs';
|
|
9
9
|
|
|
10
10
|
// Best-effort to avoid parsing some patterns as number prefix
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
`${DateLikePrefixRegex.source}|${VersionLikePrefixRegex.source}`,
|
|
23
|
-
);
|
|
24
|
-
})();
|
|
25
|
-
|
|
26
|
-
const NumberPrefixRegex = /^(?<numberPrefix>\d+)(?<separator>\s*[-_.]+\s*)(?<suffix>.*)$/;
|
|
11
|
+
// ignore common date-like patterns: https://github.com/facebook/docusaurus/issues/4640
|
|
12
|
+
// ignore common versioning patterns: https://github.com/facebook/docusaurus/issues/4653
|
|
13
|
+
// Both of them would look like 7.0-foo or 2021-11-foo
|
|
14
|
+
// note: we could try to parse float numbers in filenames, but that is probably
|
|
15
|
+
// not worth it, as a version such as "8.0" can be interpreted as either a
|
|
16
|
+
// version or a float. User can configure her own NumberPrefixParser if she
|
|
17
|
+
// wants 8.0 to be interpreted as a float
|
|
18
|
+
const ignoredPrefixPattern = /^\d+[-_.]\d+/;
|
|
19
|
+
|
|
20
|
+
const numberPrefixPattern =
|
|
21
|
+
/^(?<numberPrefix>\d+)\s*[-_.]+\s*(?<suffix>[^-_.\s].*)$/;
|
|
27
22
|
|
|
28
23
|
// 0-myDoc => {filename: myDoc, numberPrefix: 0}
|
|
29
24
|
// 003 - myDoc => {filename: myDoc, numberPrefix: 3}
|
|
30
25
|
export const DefaultNumberPrefixParser: NumberPrefixParser = (
|
|
31
26
|
filename: string,
|
|
32
27
|
) => {
|
|
33
|
-
if (
|
|
28
|
+
if (ignoredPrefixPattern.test(filename)) {
|
|
29
|
+
return {filename, numberPrefix: undefined};
|
|
30
|
+
}
|
|
31
|
+
const match = numberPrefixPattern.exec(filename);
|
|
32
|
+
if (!match) {
|
|
34
33
|
return {filename, numberPrefix: undefined};
|
|
35
34
|
}
|
|
36
|
-
const match = NumberPrefixRegex.exec(filename);
|
|
37
|
-
const cleanFileName = match?.groups?.suffix ?? filename;
|
|
38
|
-
const numberPrefixString = match?.groups?.numberPrefix;
|
|
39
|
-
const numberPrefix = numberPrefixString
|
|
40
|
-
? parseInt(numberPrefixString, 10)
|
|
41
|
-
: undefined;
|
|
42
35
|
return {
|
|
43
|
-
filename:
|
|
44
|
-
numberPrefix,
|
|
36
|
+
filename: match.groups!.suffix!,
|
|
37
|
+
numberPrefix: parseInt(match.groups!.numberPrefix!, 10),
|
|
45
38
|
};
|
|
46
39
|
};
|
|
47
40
|
|
package/src/options.ts
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
-
|
|
7
|
+
|
|
8
|
+
import logger from '@docusaurus/logger';
|
|
8
9
|
import {
|
|
9
10
|
Joi,
|
|
10
11
|
RemarkPluginsSchema,
|
|
@@ -12,50 +13,59 @@ import {
|
|
|
12
13
|
AdmonitionsSchema,
|
|
13
14
|
URISchema,
|
|
14
15
|
} from '@docusaurus/utils-validation';
|
|
15
|
-
import {
|
|
16
|
-
import
|
|
17
|
-
import admonitions from 'remark-admonitions';
|
|
18
|
-
import {DefaultSidebarItemsGenerator} from './sidebarItemsGenerator';
|
|
16
|
+
import {GlobExcludeDefault} from '@docusaurus/utils';
|
|
17
|
+
import {DefaultSidebarItemsGenerator} from './sidebars/generator';
|
|
19
18
|
import {
|
|
20
19
|
DefaultNumberPrefixParser,
|
|
21
20
|
DisabledNumberPrefixParser,
|
|
22
21
|
} from './numberPrefix';
|
|
22
|
+
import type {OptionValidationContext} from '@docusaurus/types';
|
|
23
|
+
import type {PluginOptions, Options} from '@docusaurus/plugin-content-docs';
|
|
23
24
|
|
|
24
25
|
export const DEFAULT_OPTIONS: Omit<PluginOptions, 'id' | 'sidebarPath'> = {
|
|
25
26
|
path: 'docs', // Path to data on filesystem, relative to site dir.
|
|
26
27
|
routeBasePath: 'docs', // URL Route.
|
|
27
|
-
|
|
28
|
+
tagsBasePath: 'tags', // URL Tags Route.
|
|
28
29
|
include: ['**/*.{md,mdx}'], // Extensions to include.
|
|
30
|
+
exclude: GlobExcludeDefault,
|
|
29
31
|
sidebarItemsGenerator: DefaultSidebarItemsGenerator,
|
|
30
32
|
numberPrefixParser: DefaultNumberPrefixParser,
|
|
31
33
|
docLayoutComponent: '@theme/DocPage',
|
|
32
34
|
docItemComponent: '@theme/DocItem',
|
|
35
|
+
docTagDocListComponent: '@theme/DocTagDocListPage',
|
|
36
|
+
docTagsListComponent: '@theme/DocTagsListPage',
|
|
37
|
+
docCategoryGeneratedIndexComponent: '@theme/DocCategoryGeneratedIndexPage',
|
|
33
38
|
remarkPlugins: [],
|
|
34
39
|
rehypePlugins: [],
|
|
35
40
|
beforeDefaultRemarkPlugins: [],
|
|
36
41
|
beforeDefaultRehypePlugins: [],
|
|
37
42
|
showLastUpdateTime: false,
|
|
38
43
|
showLastUpdateAuthor: false,
|
|
39
|
-
admonitions:
|
|
40
|
-
excludeNextVersionDocs: false,
|
|
44
|
+
admonitions: true,
|
|
41
45
|
includeCurrentVersion: true,
|
|
42
46
|
disableVersioning: false,
|
|
43
47
|
lastVersion: undefined,
|
|
44
48
|
versions: {},
|
|
45
49
|
editCurrentVersion: false,
|
|
46
50
|
editLocalizedFiles: false,
|
|
51
|
+
sidebarCollapsible: true,
|
|
52
|
+
sidebarCollapsed: true,
|
|
53
|
+
breadcrumbs: true,
|
|
47
54
|
};
|
|
48
55
|
|
|
49
56
|
const VersionOptionsSchema = Joi.object({
|
|
50
57
|
path: Joi.string().allow('').optional(),
|
|
51
58
|
label: Joi.string().optional(),
|
|
59
|
+
banner: Joi.string().equal('none', 'unreleased', 'unmaintained').optional(),
|
|
60
|
+
badge: Joi.boolean().optional(),
|
|
61
|
+
className: Joi.string().optional(),
|
|
52
62
|
});
|
|
53
63
|
|
|
54
64
|
const VersionsOptionsSchema = Joi.object()
|
|
55
65
|
.pattern(Joi.string().required(), VersionOptionsSchema)
|
|
56
66
|
.default(DEFAULT_OPTIONS.versions);
|
|
57
67
|
|
|
58
|
-
|
|
68
|
+
const OptionsSchema = Joi.object<PluginOptions>({
|
|
59
69
|
path: Joi.string().default(DEFAULT_OPTIONS.path),
|
|
60
70
|
editUrl: Joi.alternatives().try(URISchema, Joi.function()),
|
|
61
71
|
editCurrentVersion: Joi.boolean().default(DEFAULT_OPTIONS.editCurrentVersion),
|
|
@@ -64,8 +74,15 @@ export const OptionsSchema = Joi.object({
|
|
|
64
74
|
// '' not allowed, see https://github.com/facebook/docusaurus/issues/3374
|
|
65
75
|
// .allow('') ""
|
|
66
76
|
.default(DEFAULT_OPTIONS.routeBasePath),
|
|
67
|
-
|
|
77
|
+
tagsBasePath: Joi.string().default(DEFAULT_OPTIONS.tagsBasePath),
|
|
78
|
+
// @ts-expect-error: deprecated
|
|
79
|
+
homePageId: Joi.any().forbidden().messages({
|
|
80
|
+
'any.unknown':
|
|
81
|
+
'The docs plugin option homePageId is not supported anymore. To make a doc the "home", please add "slug: /" in its front matter. See: https://docusaurus.io/docs/next/docs-introduction#home-page-docs',
|
|
82
|
+
}),
|
|
83
|
+
|
|
68
84
|
include: Joi.array().items(Joi.string()).default(DEFAULT_OPTIONS.include),
|
|
85
|
+
exclude: Joi.array().items(Joi.string()).default(DEFAULT_OPTIONS.exclude),
|
|
69
86
|
sidebarPath: Joi.alternatives().try(
|
|
70
87
|
Joi.boolean().invalid(true),
|
|
71
88
|
Joi.string(),
|
|
@@ -73,12 +90,14 @@ export const OptionsSchema = Joi.object({
|
|
|
73
90
|
sidebarItemsGenerator: Joi.function().default(
|
|
74
91
|
() => DEFAULT_OPTIONS.sidebarItemsGenerator,
|
|
75
92
|
),
|
|
93
|
+
sidebarCollapsible: Joi.boolean().default(DEFAULT_OPTIONS.sidebarCollapsible),
|
|
94
|
+
sidebarCollapsed: Joi.boolean().default(DEFAULT_OPTIONS.sidebarCollapsed),
|
|
76
95
|
numberPrefixParser: Joi.alternatives()
|
|
77
96
|
.try(
|
|
78
97
|
Joi.function(),
|
|
79
98
|
// Convert boolean values to functions
|
|
80
99
|
Joi.alternatives().conditional(Joi.boolean(), {
|
|
81
|
-
then: Joi.custom((val) =>
|
|
100
|
+
then: Joi.custom((val: boolean) =>
|
|
82
101
|
val ? DefaultNumberPrefixParser : DisabledNumberPrefixParser,
|
|
83
102
|
),
|
|
84
103
|
}),
|
|
@@ -86,6 +105,15 @@ export const OptionsSchema = Joi.object({
|
|
|
86
105
|
.default(() => DEFAULT_OPTIONS.numberPrefixParser),
|
|
87
106
|
docLayoutComponent: Joi.string().default(DEFAULT_OPTIONS.docLayoutComponent),
|
|
88
107
|
docItemComponent: Joi.string().default(DEFAULT_OPTIONS.docItemComponent),
|
|
108
|
+
docTagsListComponent: Joi.string().default(
|
|
109
|
+
DEFAULT_OPTIONS.docTagsListComponent,
|
|
110
|
+
),
|
|
111
|
+
docTagDocListComponent: Joi.string().default(
|
|
112
|
+
DEFAULT_OPTIONS.docTagDocListComponent,
|
|
113
|
+
),
|
|
114
|
+
docCategoryGeneratedIndexComponent: Joi.string().default(
|
|
115
|
+
DEFAULT_OPTIONS.docCategoryGeneratedIndexComponent,
|
|
116
|
+
),
|
|
89
117
|
remarkPlugins: RemarkPluginsSchema.default(DEFAULT_OPTIONS.remarkPlugins),
|
|
90
118
|
rehypePlugins: RehypePluginsSchema.default(DEFAULT_OPTIONS.rehypePlugins),
|
|
91
119
|
beforeDefaultRemarkPlugins: RemarkPluginsSchema.default(
|
|
@@ -94,16 +122,11 @@ export const OptionsSchema = Joi.object({
|
|
|
94
122
|
beforeDefaultRehypePlugins: RehypePluginsSchema.default(
|
|
95
123
|
DEFAULT_OPTIONS.beforeDefaultRehypePlugins,
|
|
96
124
|
),
|
|
97
|
-
admonitions:
|
|
98
|
-
.try(AdmonitionsSchema, Joi.boolean().invalid(true))
|
|
99
|
-
.default(DEFAULT_OPTIONS.admonitions),
|
|
125
|
+
admonitions: AdmonitionsSchema.default(DEFAULT_OPTIONS.admonitions),
|
|
100
126
|
showLastUpdateTime: Joi.bool().default(DEFAULT_OPTIONS.showLastUpdateTime),
|
|
101
127
|
showLastUpdateAuthor: Joi.bool().default(
|
|
102
128
|
DEFAULT_OPTIONS.showLastUpdateAuthor,
|
|
103
129
|
),
|
|
104
|
-
excludeNextVersionDocs: Joi.bool().default(
|
|
105
|
-
DEFAULT_OPTIONS.excludeNextVersionDocs,
|
|
106
|
-
),
|
|
107
130
|
includeCurrentVersion: Joi.bool().default(
|
|
108
131
|
DEFAULT_OPTIONS.includeCurrentVersion,
|
|
109
132
|
),
|
|
@@ -111,40 +134,35 @@ export const OptionsSchema = Joi.object({
|
|
|
111
134
|
disableVersioning: Joi.bool().default(DEFAULT_OPTIONS.disableVersioning),
|
|
112
135
|
lastVersion: Joi.string().optional(),
|
|
113
136
|
versions: VersionsOptionsSchema,
|
|
137
|
+
breadcrumbs: Joi.bool().default(DEFAULT_OPTIONS.breadcrumbs),
|
|
114
138
|
});
|
|
115
139
|
|
|
116
140
|
export function validateOptions({
|
|
117
141
|
validate,
|
|
118
|
-
options,
|
|
119
|
-
}: OptionValidationContext<PluginOptions>):
|
|
120
|
-
|
|
121
|
-
// "slug: /" is better because the home doc can be different across versions
|
|
122
|
-
if (options.homePageId) {
|
|
123
|
-
console.log(
|
|
124
|
-
chalk.red(
|
|
125
|
-
`The docs plugin option homePageId=${options.homePageId} is deprecated. To make a doc the "home", prefer frontmatter: "slug: /"`,
|
|
126
|
-
),
|
|
127
|
-
);
|
|
128
|
-
}
|
|
142
|
+
options: userOptions,
|
|
143
|
+
}: OptionValidationContext<Options, PluginOptions>): PluginOptions {
|
|
144
|
+
let options = userOptions;
|
|
129
145
|
|
|
130
|
-
if (
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
146
|
+
if (options.sidebarCollapsible === false) {
|
|
147
|
+
// When sidebarCollapsible=false and sidebarCollapsed=undefined, we don't
|
|
148
|
+
// want to have the inconsistency warning. We let options.sidebarCollapsible
|
|
149
|
+
// become the default value for options.sidebarCollapsed
|
|
150
|
+
if (typeof options.sidebarCollapsed === 'undefined') {
|
|
151
|
+
options = {
|
|
152
|
+
...options,
|
|
153
|
+
sidebarCollapsed: false,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
if (options.sidebarCollapsed) {
|
|
157
|
+
logger.warn`The docs plugin config is inconsistent. It does not make sense to use code=${'sidebarCollapsible: false'} and code=${'sidebarCollapsed: true'} at the same time. code=${'sidebarCollapsed: true'} will be ignored.`;
|
|
158
|
+
options = {
|
|
159
|
+
...options,
|
|
160
|
+
sidebarCollapsed: false,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
139
163
|
}
|
|
140
164
|
|
|
141
165
|
const normalizedOptions = validate(OptionsSchema, options);
|
|
142
166
|
|
|
143
|
-
if (normalizedOptions.admonitions) {
|
|
144
|
-
normalizedOptions.remarkPlugins = normalizedOptions.remarkPlugins.concat([
|
|
145
|
-
[admonitions, normalizedOptions.admonitions],
|
|
146
|
-
]);
|
|
147
|
-
}
|
|
148
|
-
|
|
149
167
|
return normalizedOptions;
|
|
150
168
|
}
|