@docusaurus/plugin-content-docs 2.0.0-beta.1decd6f80 → 2.0.0-beta.20
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 +65 -69
- package/lib/client/docsClientUtils.d.ts +9 -28
- package/lib/client/docsClientUtils.js +34 -42
- package/lib/client/index.d.ts +22 -0
- package/lib/client/index.js +72 -0
- package/lib/constants.d.ts +4 -0
- package/lib/constants.js +4 -1
- package/lib/docs.d.ts +33 -4
- package/lib/docs.js +173 -62
- package/{src/__tests__/__fixtures__/site-with-doc-label/docusaurus.config.js → lib/frontMatter.d.ts} +4 -8
- package/lib/{docFrontMatter.js → frontMatter.js} +16 -6
- package/lib/globalData.d.ts +3 -3
- package/lib/globalData.js +35 -6
- package/lib/index.d.ts +3 -3
- package/lib/index.js +135 -140
- 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 +55 -19
- package/lib/props.d.ts +7 -2
- package/lib/props.js +72 -15
- 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 +22 -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 +55 -0
- package/lib/sidebars/postProcessor.d.ts +8 -0
- package/lib/sidebars/postProcessor.js +65 -0
- package/lib/sidebars/processor.d.ts +10 -0
- package/lib/sidebars/processor.js +90 -0
- package/lib/sidebars/types.d.ts +178 -0
- package/{src/__tests__/__fixtures__/site-with-autogenerated-sidebar/partialAutogeneratedSidebars2.js → lib/sidebars/types.js} +2 -10
- package/lib/sidebars/utils.d.ts +54 -0
- package/lib/sidebars/utils.js +255 -0
- package/lib/sidebars/validation.d.ts +11 -0
- package/lib/sidebars/validation.js +138 -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 +84 -94
- package/lib/types.d.ts +13 -171
- package/lib/versions/files.d.ts +44 -0
- package/lib/versions/files.js +142 -0
- package/lib/versions/index.d.ts +36 -0
- package/lib/versions/index.js +155 -0
- package/lib/versions/validation.d.ts +17 -0
- package/lib/versions/validation.js +71 -0
- package/package.json +32 -26
- package/src/categoryGeneratedIndex.ts +60 -0
- package/src/cli.ts +90 -109
- package/src/client/docsClientUtils.ts +47 -84
- package/src/client/index.ts +103 -0
- package/src/constants.ts +4 -2
- package/{types.d.ts → src/deps.d.ts} +1 -1
- package/src/docs.ts +244 -63
- package/src/frontMatter.ts +51 -0
- package/src/globalData.ts +57 -7
- package/src/index.ts +186 -190
- package/src/lastUpdate.ts +26 -33
- package/src/markdown/index.ts +10 -16
- package/src/markdown/linkify.ts +8 -5
- package/src/numberPrefix.ts +19 -26
- package/src/options.ts +60 -32
- package/src/plugin-content-docs.d.ts +632 -75
- package/src/props.ts +109 -22
- package/src/routes.ts +159 -0
- package/src/server-export.ts +22 -0
- package/src/sidebars/README.md +9 -0
- package/src/sidebars/generator.ts +292 -0
- package/src/sidebars/index.ts +118 -0
- package/src/sidebars/normalization.ts +85 -0
- package/src/sidebars/postProcessor.ts +89 -0
- package/src/sidebars/processor.ts +139 -0
- package/src/sidebars/types.ts +275 -0
- package/src/sidebars/utils.ts +391 -0
- package/src/sidebars/validation.ts +174 -0
- package/src/slug.ts +42 -23
- package/src/tags.ts +20 -0
- package/src/translations.ts +124 -117
- package/src/types.ts +18 -231
- package/src/versions/files.ts +220 -0
- package/src/versions/index.ts +247 -0
- package/src/versions/validation.ts +113 -0
- package/lib/.tsbuildinfo +0 -4673
- package/lib/docFrontMatter.d.ts +0 -21
- 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/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/translations.ts
CHANGED
|
@@ -5,24 +5,27 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import {
|
|
8
|
+
import type {
|
|
9
9
|
LoadedVersion,
|
|
10
|
-
Sidebar,
|
|
11
10
|
LoadedContent,
|
|
11
|
+
} from '@docusaurus/plugin-content-docs';
|
|
12
|
+
import type {
|
|
13
|
+
Sidebar,
|
|
14
|
+
SidebarItemCategory,
|
|
15
|
+
SidebarItemCategoryLink,
|
|
12
16
|
Sidebars,
|
|
13
|
-
|
|
14
|
-
} from './types';
|
|
17
|
+
} from './sidebars/types';
|
|
15
18
|
|
|
16
|
-
import
|
|
19
|
+
import _ from 'lodash';
|
|
17
20
|
import {
|
|
18
21
|
collectSidebarCategories,
|
|
19
22
|
transformSidebarItems,
|
|
20
23
|
collectSidebarLinks,
|
|
21
|
-
} from './sidebars';
|
|
22
|
-
import {
|
|
24
|
+
} from './sidebars/utils';
|
|
25
|
+
import type {
|
|
23
26
|
TranslationFileContent,
|
|
24
27
|
TranslationFile,
|
|
25
|
-
|
|
28
|
+
TranslationMessage,
|
|
26
29
|
} from '@docusaurus/types';
|
|
27
30
|
import {mergeTranslations} from '@docusaurus/utils';
|
|
28
31
|
import {CURRENT_VERSION_NAME} from './constants';
|
|
@@ -30,11 +33,10 @@ import {CURRENT_VERSION_NAME} from './constants';
|
|
|
30
33
|
function getVersionFileName(versionName: string): string {
|
|
31
34
|
if (versionName === CURRENT_VERSION_NAME) {
|
|
32
35
|
return versionName;
|
|
33
|
-
} else {
|
|
34
|
-
// I don't like this "version-" prefix,
|
|
35
|
-
// but it's for consistency with site/versioned_docs
|
|
36
|
-
return `version-${versionName}`;
|
|
37
36
|
}
|
|
37
|
+
// I don't like this "version-" prefix,
|
|
38
|
+
// but it's for consistency with site/versioned_docs
|
|
39
|
+
return `version-${versionName}`;
|
|
38
40
|
}
|
|
39
41
|
|
|
40
42
|
// TODO legacy, the sidebar name is like "version-2.0.0-alpha.66/docs"
|
|
@@ -54,70 +56,61 @@ function getNormalizedSidebarName({
|
|
|
54
56
|
return rest.join('/');
|
|
55
57
|
}
|
|
56
58
|
|
|
57
|
-
/*
|
|
58
|
-
// Do we need to translate doc metadatas?
|
|
59
|
-
// It seems translating frontmatter labels is good enough
|
|
60
|
-
function getDocTranslations(doc: DocMetadata): TranslationFileContent {
|
|
61
|
-
return {
|
|
62
|
-
[`${doc.unversionedId}.title`]: {
|
|
63
|
-
message: doc.title,
|
|
64
|
-
description: `The title for doc with id=${doc.unversionedId}`,
|
|
65
|
-
},
|
|
66
|
-
...(doc.sidebar_label
|
|
67
|
-
? {
|
|
68
|
-
[`${doc.unversionedId}.sidebar_label`]: {
|
|
69
|
-
message: doc.sidebar_label,
|
|
70
|
-
description: `The sidebar label for doc with id=${doc.unversionedId}`,
|
|
71
|
-
},
|
|
72
|
-
}
|
|
73
|
-
: undefined),
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
function translateDoc(
|
|
77
|
-
doc: DocMetadata,
|
|
78
|
-
docsTranslations: TranslationFileContent,
|
|
79
|
-
): DocMetadata {
|
|
80
|
-
return {
|
|
81
|
-
...doc,
|
|
82
|
-
title: docsTranslations[`${doc.unversionedId}.title`]?.message ?? doc.title,
|
|
83
|
-
sidebar_label:
|
|
84
|
-
docsTranslations[`${doc.unversionedId}.sidebar_label`]?.message ??
|
|
85
|
-
doc.sidebar_label,
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
function getDocsTranslations(version: LoadedVersion): TranslationFileContent {
|
|
90
|
-
return mergeTranslations(version.docs.map(getDocTranslations));
|
|
91
|
-
}
|
|
92
|
-
function translateDocs(
|
|
93
|
-
docs: DocMetadata[],
|
|
94
|
-
docsTranslations: TranslationFileContent,
|
|
95
|
-
): DocMetadata[] {
|
|
96
|
-
return docs.map((doc) => translateDoc(doc, docsTranslations));
|
|
97
|
-
}
|
|
98
|
-
*/
|
|
99
|
-
|
|
100
59
|
function getSidebarTranslationFileContent(
|
|
101
60
|
sidebar: Sidebar,
|
|
102
61
|
sidebarName: string,
|
|
103
62
|
): TranslationFileContent {
|
|
63
|
+
type TranslationMessageEntry = [string, TranslationMessage];
|
|
64
|
+
|
|
104
65
|
const categories = collectSidebarCategories(sidebar);
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
.
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
66
|
+
|
|
67
|
+
const categoryContent: TranslationFileContent = Object.fromEntries(
|
|
68
|
+
categories.flatMap((category) => {
|
|
69
|
+
const entries: TranslationMessageEntry[] = [];
|
|
70
|
+
|
|
71
|
+
entries.push([
|
|
72
|
+
`sidebar.${sidebarName}.category.${category.label}`,
|
|
73
|
+
{
|
|
74
|
+
message: category.label,
|
|
75
|
+
description: `The label for category ${category.label} in sidebar ${sidebarName}`,
|
|
76
|
+
},
|
|
77
|
+
]);
|
|
78
|
+
|
|
79
|
+
if (category.link?.type === 'generated-index') {
|
|
80
|
+
if (category.link.title) {
|
|
81
|
+
entries.push([
|
|
82
|
+
`sidebar.${sidebarName}.category.${category.label}.link.generated-index.title`,
|
|
83
|
+
{
|
|
84
|
+
message: category.link.title,
|
|
85
|
+
description: `The generated-index page title for category ${category.label} in sidebar ${sidebarName}`,
|
|
86
|
+
},
|
|
87
|
+
]);
|
|
88
|
+
}
|
|
89
|
+
if (category.link.description) {
|
|
90
|
+
entries.push([
|
|
91
|
+
`sidebar.${sidebarName}.category.${category.label}.link.generated-index.description`,
|
|
92
|
+
{
|
|
93
|
+
message: category.link.description,
|
|
94
|
+
description: `The generated-index page description for category ${category.label} in sidebar ${sidebarName}`,
|
|
95
|
+
},
|
|
96
|
+
]);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return entries;
|
|
101
|
+
}),
|
|
102
|
+
);
|
|
112
103
|
|
|
113
104
|
const links = collectSidebarLinks(sidebar);
|
|
114
|
-
const linksContent: TranslationFileContent =
|
|
115
|
-
.
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
105
|
+
const linksContent: TranslationFileContent = Object.fromEntries(
|
|
106
|
+
links.map((link) => [
|
|
107
|
+
`sidebar.${sidebarName}.link.${link.label}`,
|
|
108
|
+
{
|
|
109
|
+
message: link.label,
|
|
110
|
+
description: `The label for link ${link.label} in sidebar ${sidebarName}, linking to ${link.href}`,
|
|
111
|
+
},
|
|
112
|
+
]),
|
|
113
|
+
);
|
|
121
114
|
|
|
122
115
|
return mergeTranslations([categoryContent, linksContent]);
|
|
123
116
|
}
|
|
@@ -131,29 +124,51 @@ function translateSidebar({
|
|
|
131
124
|
sidebarName: string;
|
|
132
125
|
sidebarsTranslations: TranslationFileContent;
|
|
133
126
|
}): Sidebar {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
127
|
+
function transformSidebarCategoryLink(
|
|
128
|
+
category: SidebarItemCategory,
|
|
129
|
+
): SidebarItemCategoryLink | undefined {
|
|
130
|
+
if (!category.link) {
|
|
131
|
+
return undefined;
|
|
132
|
+
}
|
|
133
|
+
if (category.link.type === 'generated-index') {
|
|
134
|
+
const title =
|
|
135
|
+
sidebarsTranslations[
|
|
136
|
+
`sidebar.${sidebarName}.category.${category.label}.link.generated-index.title`
|
|
137
|
+
]?.message ?? category.link.title;
|
|
138
|
+
const description =
|
|
139
|
+
sidebarsTranslations[
|
|
140
|
+
`sidebar.${sidebarName}.category.${category.label}.link.generated-index.description`
|
|
141
|
+
]?.message ?? category.link.description;
|
|
142
|
+
return {
|
|
143
|
+
...category.link,
|
|
144
|
+
title,
|
|
145
|
+
description,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
return category.link;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
return transformSidebarItems(sidebar, (item) => {
|
|
152
|
+
if (item.type === 'category') {
|
|
153
|
+
const link = transformSidebarCategoryLink(item);
|
|
154
|
+
return {
|
|
155
|
+
...item,
|
|
156
|
+
label:
|
|
157
|
+
sidebarsTranslations[`sidebar.${sidebarName}.category.${item.label}`]
|
|
158
|
+
?.message ?? item.label,
|
|
159
|
+
...(link && {link}),
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
if (item.type === 'link') {
|
|
163
|
+
return {
|
|
164
|
+
...item,
|
|
165
|
+
label:
|
|
166
|
+
sidebarsTranslations[`sidebar.${sidebarName}.link.${item.label}`]
|
|
167
|
+
?.message ?? item.label,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
return item;
|
|
171
|
+
});
|
|
157
172
|
}
|
|
158
173
|
|
|
159
174
|
function getSidebarsTranslations(
|
|
@@ -173,79 +188,71 @@ function translateSidebars(
|
|
|
173
188
|
version: LoadedVersion,
|
|
174
189
|
sidebarsTranslations: TranslationFileContent,
|
|
175
190
|
): Sidebars {
|
|
176
|
-
return mapValues(version.sidebars, (sidebar, sidebarName) =>
|
|
177
|
-
|
|
191
|
+
return _.mapValues(version.sidebars, (sidebar, sidebarName) =>
|
|
192
|
+
translateSidebar({
|
|
178
193
|
sidebar,
|
|
179
194
|
sidebarName: getNormalizedSidebarName({
|
|
180
195
|
sidebarName,
|
|
181
196
|
versionName: version.versionName,
|
|
182
197
|
}),
|
|
183
198
|
sidebarsTranslations,
|
|
184
|
-
})
|
|
185
|
-
|
|
199
|
+
}),
|
|
200
|
+
);
|
|
186
201
|
}
|
|
187
202
|
|
|
188
|
-
function getVersionTranslationFiles(version: LoadedVersion):
|
|
203
|
+
function getVersionTranslationFiles(version: LoadedVersion): TranslationFile[] {
|
|
189
204
|
const versionTranslations: TranslationFileContent = {
|
|
190
205
|
'version.label': {
|
|
191
|
-
message: version.
|
|
206
|
+
message: version.label,
|
|
192
207
|
description: `The label for version ${version.versionName}`,
|
|
193
208
|
},
|
|
194
209
|
};
|
|
195
210
|
|
|
196
|
-
const sidebarsTranslations: TranslationFileContent =
|
|
197
|
-
version
|
|
198
|
-
);
|
|
199
|
-
|
|
200
|
-
// const docsTranslations: TranslationFileContent = getDocsTranslations(version);
|
|
211
|
+
const sidebarsTranslations: TranslationFileContent =
|
|
212
|
+
getSidebarsTranslations(version);
|
|
201
213
|
|
|
202
214
|
return [
|
|
203
215
|
{
|
|
204
216
|
path: getVersionFileName(version.versionName),
|
|
205
|
-
content: mergeTranslations([
|
|
206
|
-
versionTranslations,
|
|
207
|
-
sidebarsTranslations,
|
|
208
|
-
// docsTranslations,
|
|
209
|
-
]),
|
|
217
|
+
content: mergeTranslations([versionTranslations, sidebarsTranslations]),
|
|
210
218
|
},
|
|
211
219
|
];
|
|
212
220
|
}
|
|
213
221
|
function translateVersion(
|
|
214
222
|
version: LoadedVersion,
|
|
215
|
-
translationFiles:
|
|
223
|
+
translationFiles: {[fileName: string]: TranslationFile},
|
|
216
224
|
): LoadedVersion {
|
|
217
225
|
const versionTranslations =
|
|
218
|
-
translationFiles[getVersionFileName(version.versionName)]
|
|
226
|
+
translationFiles[getVersionFileName(version.versionName)]!.content;
|
|
219
227
|
return {
|
|
220
228
|
...version,
|
|
221
|
-
|
|
229
|
+
label: versionTranslations['version.label']?.message ?? version.label,
|
|
222
230
|
sidebars: translateSidebars(version, versionTranslations),
|
|
223
|
-
// docs: translateDocs(version.docs, versionTranslations),
|
|
224
231
|
};
|
|
225
232
|
}
|
|
226
233
|
|
|
227
234
|
function getVersionsTranslationFiles(
|
|
228
235
|
versions: LoadedVersion[],
|
|
229
|
-
):
|
|
230
|
-
return
|
|
236
|
+
): TranslationFile[] {
|
|
237
|
+
return versions.flatMap(getVersionTranslationFiles);
|
|
231
238
|
}
|
|
232
239
|
function translateVersions(
|
|
233
240
|
versions: LoadedVersion[],
|
|
234
|
-
translationFiles:
|
|
241
|
+
translationFiles: {[fileName: string]: TranslationFile},
|
|
235
242
|
): LoadedVersion[] {
|
|
236
243
|
return versions.map((version) => translateVersion(version, translationFiles));
|
|
237
244
|
}
|
|
238
245
|
|
|
239
246
|
export function getLoadedContentTranslationFiles(
|
|
240
247
|
loadedContent: LoadedContent,
|
|
241
|
-
):
|
|
248
|
+
): TranslationFile[] {
|
|
242
249
|
return getVersionsTranslationFiles(loadedContent.loadedVersions);
|
|
243
250
|
}
|
|
244
251
|
export function translateLoadedContent(
|
|
245
252
|
loadedContent: LoadedContent,
|
|
246
253
|
translationFiles: TranslationFile[],
|
|
247
254
|
): LoadedContent {
|
|
248
|
-
const translationFilesMap:
|
|
255
|
+
const translationFilesMap: {[fileName: string]: TranslationFile} = _.keyBy(
|
|
249
256
|
translationFiles,
|
|
250
257
|
(f) => f.path,
|
|
251
258
|
);
|
package/src/types.ts
CHANGED
|
@@ -5,14 +5,16 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
// eslint-disable-next-line spaced-comment
|
|
9
8
|
/// <reference types="@docusaurus/module-type-aliases" />
|
|
10
9
|
|
|
11
|
-
import type {
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
import type {BrokenMarkdownLink, Tag} from '@docusaurus/utils';
|
|
11
|
+
import type {
|
|
12
|
+
VersionMetadata,
|
|
13
|
+
LastUpdateData,
|
|
14
|
+
LoadedVersion,
|
|
15
|
+
CategoryGeneratedIndexMetadata,
|
|
16
|
+
} from '@docusaurus/plugin-content-docs';
|
|
17
|
+
import type {SidebarsUtils} from './sidebars/utils';
|
|
16
18
|
|
|
17
19
|
export type DocFile = {
|
|
18
20
|
contentPath: string; // /!\ may be localized
|
|
@@ -22,243 +24,28 @@ export type DocFile = {
|
|
|
22
24
|
lastUpdate: LastUpdateData;
|
|
23
25
|
};
|
|
24
26
|
|
|
25
|
-
export type VersionName = string;
|
|
26
|
-
|
|
27
|
-
export type VersionMetadata = ContentPaths & {
|
|
28
|
-
versionName: VersionName; // 1.0.0
|
|
29
|
-
versionLabel: string; // Version 1.0.0
|
|
30
|
-
versionPath: string; // /baseUrl/docs/1.0.0
|
|
31
|
-
versionEditUrl?: string | undefined;
|
|
32
|
-
versionEditUrlLocalized?: string | undefined;
|
|
33
|
-
isLast: boolean;
|
|
34
|
-
sidebarFilePath: string | false | undefined; // versioned_sidebars/1.0.0.json
|
|
35
|
-
routePriority: number | undefined; // -1 for the latest docs
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
export type EditUrlFunction = (editUrlParams: {
|
|
39
|
-
version: string;
|
|
40
|
-
versionDocsDirPath: string;
|
|
41
|
-
docPath: string;
|
|
42
|
-
permalink: string;
|
|
43
|
-
locale: string;
|
|
44
|
-
}) => string | undefined;
|
|
45
|
-
|
|
46
|
-
export type MetadataOptions = {
|
|
47
|
-
routeBasePath: string;
|
|
48
|
-
homePageId?: string;
|
|
49
|
-
editUrl?: string | EditUrlFunction;
|
|
50
|
-
editCurrentVersion: boolean;
|
|
51
|
-
editLocalizedFiles: boolean;
|
|
52
|
-
showLastUpdateTime?: boolean;
|
|
53
|
-
showLastUpdateAuthor?: boolean;
|
|
54
|
-
numberPrefixParser: NumberPrefixParser;
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
export type PathOptions = {
|
|
58
|
-
path: string;
|
|
59
|
-
sidebarPath?: string | false | undefined;
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
export type VersionOptions = {
|
|
63
|
-
path?: string;
|
|
64
|
-
label?: string;
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
export type VersionsOptions = {
|
|
68
|
-
lastVersion?: string;
|
|
69
|
-
versions: Record<string, VersionOptions>;
|
|
70
|
-
onlyIncludeVersions?: string[];
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
export type PluginOptions = MetadataOptions &
|
|
74
|
-
PathOptions &
|
|
75
|
-
VersionsOptions &
|
|
76
|
-
RemarkAndRehypePluginOptions & {
|
|
77
|
-
id: string;
|
|
78
|
-
include: string[];
|
|
79
|
-
docLayoutComponent: string;
|
|
80
|
-
docItemComponent: string;
|
|
81
|
-
admonitions: Record<string, unknown>;
|
|
82
|
-
disableVersioning: boolean;
|
|
83
|
-
excludeNextVersionDocs?: boolean;
|
|
84
|
-
includeCurrentVersion: boolean;
|
|
85
|
-
sidebarItemsGenerator: SidebarItemsGeneratorOption;
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
export type SidebarItemBase = {
|
|
89
|
-
customProps?: Record<string, unknown>;
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
export type SidebarItemDoc = SidebarItemBase & {
|
|
93
|
-
type: 'doc' | 'ref';
|
|
94
|
-
label?: string;
|
|
95
|
-
id: string;
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
export type SidebarItemLink = SidebarItemBase & {
|
|
99
|
-
type: 'link';
|
|
100
|
-
href: string;
|
|
101
|
-
label: string;
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
export type SidebarItemCategory = SidebarItemBase & {
|
|
105
|
-
type: 'category';
|
|
106
|
-
label: string;
|
|
107
|
-
items: SidebarItem[];
|
|
108
|
-
collapsed: boolean;
|
|
109
|
-
};
|
|
110
|
-
|
|
111
|
-
export type UnprocessedSidebarItemAutogenerated = {
|
|
112
|
-
type: 'autogenerated';
|
|
113
|
-
dirName: string;
|
|
114
|
-
};
|
|
115
|
-
|
|
116
|
-
export type UnprocessedSidebarItemCategory = SidebarItemBase & {
|
|
117
|
-
type: 'category';
|
|
118
|
-
label: string;
|
|
119
|
-
items: UnprocessedSidebarItem[];
|
|
120
|
-
collapsed: boolean;
|
|
121
|
-
};
|
|
122
|
-
|
|
123
|
-
export type UnprocessedSidebarItem =
|
|
124
|
-
| SidebarItemDoc
|
|
125
|
-
| SidebarItemLink
|
|
126
|
-
| UnprocessedSidebarItemCategory
|
|
127
|
-
| UnprocessedSidebarItemAutogenerated;
|
|
128
|
-
|
|
129
|
-
export type UnprocessedSidebar = UnprocessedSidebarItem[];
|
|
130
|
-
export type UnprocessedSidebars = Record<string, UnprocessedSidebar>;
|
|
131
|
-
|
|
132
|
-
export type SidebarItem =
|
|
133
|
-
| SidebarItemDoc
|
|
134
|
-
| SidebarItemLink
|
|
135
|
-
| SidebarItemCategory;
|
|
136
|
-
|
|
137
|
-
export type Sidebar = SidebarItem[];
|
|
138
|
-
export type SidebarItemType = SidebarItem['type'];
|
|
139
|
-
export type Sidebars = Record<string, Sidebar>;
|
|
140
|
-
|
|
141
|
-
// Reduce API surface for options.sidebarItemsGenerator
|
|
142
|
-
// The user-provided generator fn should receive only a subset of metadatas
|
|
143
|
-
// A change to any of these metadatas can be considered as a breaking change
|
|
144
|
-
export type SidebarItemsGeneratorDoc = Pick<
|
|
145
|
-
DocMetadataBase,
|
|
146
|
-
'id' | 'frontMatter' | 'source' | 'sourceDirName' | 'sidebarPosition'
|
|
147
|
-
>;
|
|
148
|
-
export type SidebarItemsGeneratorVersion = Pick<
|
|
149
|
-
VersionMetadata,
|
|
150
|
-
'versionName' | 'contentPath'
|
|
151
|
-
>;
|
|
152
|
-
|
|
153
|
-
export type SidebarItemsGeneratorArgs = {
|
|
154
|
-
item: UnprocessedSidebarItemAutogenerated;
|
|
155
|
-
version: SidebarItemsGeneratorVersion;
|
|
156
|
-
docs: SidebarItemsGeneratorDoc[];
|
|
157
|
-
numberPrefixParser: NumberPrefixParser;
|
|
158
|
-
};
|
|
159
|
-
export type SidebarItemsGenerator = (
|
|
160
|
-
generatorArgs: SidebarItemsGeneratorArgs,
|
|
161
|
-
) => Promise<SidebarItem[]>;
|
|
162
|
-
|
|
163
|
-
// Also inject the default generator to conveniently wrap/enhance/sort the default sidebar gen logic
|
|
164
|
-
// see https://github.com/facebook/docusaurus/issues/4640#issuecomment-822292320
|
|
165
|
-
export type SidebarItemsGeneratorOptionArgs = {
|
|
166
|
-
defaultSidebarItemsGenerator: SidebarItemsGenerator;
|
|
167
|
-
} & SidebarItemsGeneratorArgs;
|
|
168
|
-
export type SidebarItemsGeneratorOption = (
|
|
169
|
-
generatorArgs: SidebarItemsGeneratorOptionArgs,
|
|
170
|
-
) => Promise<SidebarItem[]>;
|
|
171
|
-
|
|
172
|
-
export type OrderMetadata = {
|
|
173
|
-
previous?: string;
|
|
174
|
-
next?: string;
|
|
175
|
-
sidebar?: string;
|
|
176
|
-
};
|
|
177
|
-
|
|
178
|
-
export type LastUpdateData = {
|
|
179
|
-
lastUpdatedAt?: number;
|
|
180
|
-
formattedLastUpdatedAt?: string;
|
|
181
|
-
lastUpdatedBy?: string;
|
|
182
|
-
};
|
|
183
|
-
|
|
184
|
-
export type FrontMatter = {
|
|
185
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
186
|
-
[key: string]: any;
|
|
187
|
-
};
|
|
188
|
-
|
|
189
|
-
export type DocMetadataBase = LastUpdateData & {
|
|
190
|
-
version: VersionName;
|
|
191
|
-
unversionedId: string;
|
|
192
|
-
id: string;
|
|
193
|
-
isDocsHomePage: boolean;
|
|
194
|
-
title: string;
|
|
195
|
-
description: string;
|
|
196
|
-
source: string;
|
|
197
|
-
sourceDirName: string; // relative to the docs folder (can be ".")
|
|
198
|
-
slug: string;
|
|
199
|
-
permalink: string;
|
|
200
|
-
// eslint-disable-next-line camelcase
|
|
201
|
-
sidebar_label?: string;
|
|
202
|
-
sidebarPosition?: number;
|
|
203
|
-
editUrl?: string | null;
|
|
204
|
-
frontMatter: FrontMatter;
|
|
205
|
-
};
|
|
206
|
-
|
|
207
|
-
export type DocNavLink = {
|
|
208
|
-
title: string;
|
|
209
|
-
permalink: string;
|
|
210
|
-
};
|
|
211
|
-
|
|
212
|
-
export type DocMetadata = DocMetadataBase & {
|
|
213
|
-
sidebar?: string;
|
|
214
|
-
previous?: DocNavLink;
|
|
215
|
-
next?: DocNavLink;
|
|
216
|
-
};
|
|
217
|
-
|
|
218
27
|
export type SourceToPermalink = {
|
|
219
28
|
[source: string]: string;
|
|
220
29
|
};
|
|
221
|
-
export type LoadedVersion = VersionMetadata & {
|
|
222
|
-
versionPath: string;
|
|
223
|
-
mainDocId: string;
|
|
224
|
-
docs: DocMetadata[];
|
|
225
|
-
sidebars: Sidebars;
|
|
226
|
-
permalinkToSidebar: Record<string, string>;
|
|
227
|
-
};
|
|
228
|
-
|
|
229
|
-
export type LoadedContent = {
|
|
230
|
-
loadedVersions: LoadedVersion[];
|
|
231
|
-
};
|
|
232
30
|
|
|
233
|
-
export type
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
sidebar: string | undefined;
|
|
31
|
+
export type VersionTag = Tag & {
|
|
32
|
+
/** All doc ids having this tag. */
|
|
33
|
+
docIds: string[];
|
|
237
34
|
};
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
name: VersionName;
|
|
241
|
-
label: string;
|
|
242
|
-
isLast: boolean;
|
|
243
|
-
path: string;
|
|
244
|
-
mainDocId: string; // home doc (if docs homepage configured), or first doc
|
|
245
|
-
docs: GlobalDoc[];
|
|
35
|
+
export type VersionTags = {
|
|
36
|
+
[permalink: string]: VersionTag;
|
|
246
37
|
};
|
|
247
38
|
|
|
248
|
-
export type
|
|
249
|
-
|
|
250
|
-
|
|
39
|
+
export type FullVersion = LoadedVersion & {
|
|
40
|
+
sidebarsUtils: SidebarsUtils;
|
|
41
|
+
categoryGeneratedIndices: CategoryGeneratedIndexMetadata[];
|
|
251
42
|
};
|
|
252
43
|
|
|
253
|
-
export type
|
|
44
|
+
export type DocBrokenMarkdownLink = BrokenMarkdownLink<VersionMetadata>;
|
|
254
45
|
|
|
255
46
|
export type DocsMarkdownOption = {
|
|
256
47
|
versionsMetadata: VersionMetadata[];
|
|
257
48
|
siteDir: string;
|
|
258
49
|
sourceToPermalink: SourceToPermalink;
|
|
259
|
-
onBrokenMarkdownLink: (brokenMarkdownLink:
|
|
50
|
+
onBrokenMarkdownLink: (brokenMarkdownLink: DocBrokenMarkdownLink) => void;
|
|
260
51
|
};
|
|
261
|
-
|
|
262
|
-
export type NumberPrefixParser = (
|
|
263
|
-
filename: string,
|
|
264
|
-
) => {filename: string; numberPrefix?: number};
|