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