@docusaurus/plugin-content-docs 2.0.0-beta.15d451942 → 2.0.0-beta.18
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 +35 -0
- package/lib/cli.d.ts +2 -2
- package/lib/cli.js +37 -51
- package/lib/client/docsClientUtils.d.ts +6 -26
- package/lib/client/docsClientUtils.js +28 -34
- package/lib/{theme/hooks/useDocs.d.ts → client/index.d.ts} +4 -3
- package/lib/{theme/hooks/useDocs.js → client/index.js} +28 -25
- package/lib/docs.d.ts +31 -4
- package/lib/docs.js +160 -54
- package/{src/__tests__/__fixtures__/simple-site/docusaurus.config.js → lib/frontMatter.d.ts} +4 -8
- package/lib/{docFrontMatter.js → frontMatter.js} +13 -6
- package/lib/globalData.d.ts +2 -2
- package/lib/globalData.js +32 -3
- package/lib/index.d.ts +4 -3
- package/lib/index.js +123 -136
- 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 -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 +55 -19
- package/lib/props.d.ts +7 -2
- package/lib/props.js +70 -14
- package/lib/routes.d.ts +28 -0
- package/lib/routes.js +110 -0
- package/lib/server-export.d.ts +8 -0
- package/lib/server-export.js +23 -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 +94 -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 +79 -0
- package/lib/sidebars/types.d.ts +174 -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 +6 -4
- package/lib/slug.js +29 -19
- package/{src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docusaurus.config.js → lib/tags.d.ts} +2 -8
- package/lib/tags.js +21 -0
- package/lib/translations.d.ts +2 -2
- package/lib/translations.js +89 -49
- package/lib/types.d.ts +60 -130
- package/lib/versions.d.ts +29 -4
- package/lib/versions.js +134 -97
- package/package.json +30 -26
- package/src/categoryGeneratedIndex.ts +55 -0
- package/src/cli.ts +47 -63
- package/src/client/docsClientUtils.ts +38 -73
- package/src/{theme/hooks/useDocs.ts → client/index.ts} +16 -11
- package/{types.d.ts → src/deps.d.ts} +1 -1
- package/src/docs.ts +212 -46
- package/src/{docFrontMatter.ts → frontMatter.ts} +21 -26
- package/src/globalData.ts +53 -3
- package/src/index.ts +168 -178
- package/src/lastUpdate.ts +26 -33
- package/src/markdown/index.ts +10 -16
- package/src/markdown/linkify.ts +6 -2
- package/src/numberPrefix.ts +19 -26
- package/src/options.ts +60 -32
- package/src/plugin-content-docs.d.ts +263 -40
- package/src/props.ts +105 -21
- package/src/routes.ts +185 -0
- package/src/server-export.ts +24 -0
- package/src/sidebars/README.md +9 -0
- package/src/sidebars/generator.ts +292 -0
- package/src/sidebars/index.ts +120 -0
- package/src/sidebars/normalization.ts +85 -0
- package/src/sidebars/postProcessor.ts +89 -0
- package/src/sidebars/processor.ts +120 -0
- package/src/sidebars/types.ts +274 -0
- package/src/sidebars/utils.ts +388 -0
- package/src/sidebars/validation.ts +174 -0
- package/src/slug.ts +40 -23
- package/src/tags.ts +19 -0
- package/src/translations.ts +124 -66
- package/src/types.ts +67 -187
- package/src/versions.ts +205 -110
- package/lib/.tsbuildinfo +0 -4717
- 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/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-first-level-not-category.js +0 -20
- 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/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-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/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/tsconfig.json +0 -9
package/lib/versions.js
CHANGED
|
@@ -6,22 +6,19 @@
|
|
|
6
6
|
* LICENSE file in the root directory of this source tree.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.getDocsDirPaths = exports.readVersionsMetadata = exports.getVersionsFilePath = exports.getVersionedSidebarsDirPath = exports.getVersionedDocsDirPath = void 0;
|
|
9
|
+
exports.getDocsDirPaths = exports.readVersionsMetadata = exports.filterVersions = exports.getVersionBadge = exports.getVersionBanner = exports.getDefaultVersionBanner = exports.readVersionNames = exports.readVersionsFile = exports.getVersionsFilePath = exports.getVersionedSidebarsDirPath = exports.getVersionedDocsDirPath = void 0;
|
|
10
10
|
const tslib_1 = require("tslib");
|
|
11
11
|
const path_1 = tslib_1.__importDefault(require("path"));
|
|
12
12
|
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
|
|
13
13
|
const constants_1 = require("./constants");
|
|
14
|
-
const constants_2 = require("@docusaurus/core/lib/constants");
|
|
15
14
|
const utils_1 = require("@docusaurus/utils");
|
|
16
|
-
const lodash_1 = require("lodash");
|
|
15
|
+
const lodash_1 = tslib_1.__importDefault(require("lodash"));
|
|
16
|
+
const sidebars_1 = require("./sidebars");
|
|
17
17
|
// retro-compatibility: no prefix for the default plugin id
|
|
18
18
|
function addPluginIdPrefix(fileOrDir, pluginId) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
else {
|
|
23
|
-
return `${pluginId}_${fileOrDir}`;
|
|
24
|
-
}
|
|
19
|
+
return pluginId === utils_1.DEFAULT_PLUGIN_ID
|
|
20
|
+
? fileOrDir
|
|
21
|
+
: `${pluginId}_${fileOrDir}`;
|
|
25
22
|
}
|
|
26
23
|
function getVersionedDocsDirPath(siteDir, pluginId) {
|
|
27
24
|
return path_1.default.join(siteDir, addPluginIdPrefix(constants_1.VERSIONED_DOCS_DIR, pluginId));
|
|
@@ -37,52 +34,50 @@ function getVersionsFilePath(siteDir, pluginId) {
|
|
|
37
34
|
exports.getVersionsFilePath = getVersionsFilePath;
|
|
38
35
|
function ensureValidVersionString(version) {
|
|
39
36
|
if (typeof version !== 'string') {
|
|
40
|
-
throw new Error(`
|
|
37
|
+
throw new Error(`Versions should be strings. Found type "${typeof version}" for version "${version}".`);
|
|
41
38
|
}
|
|
42
39
|
// Should we forbid versions with special chars like / ?
|
|
43
40
|
if (version.trim().length === 0) {
|
|
44
|
-
throw new Error(`Invalid version
|
|
41
|
+
throw new Error(`Invalid version "${version}".`);
|
|
45
42
|
}
|
|
46
43
|
}
|
|
47
44
|
function ensureValidVersionArray(versionArray) {
|
|
48
|
-
if (!(versionArray
|
|
49
|
-
throw new Error(`The versions file should contain an array of
|
|
45
|
+
if (!Array.isArray(versionArray)) {
|
|
46
|
+
throw new Error(`The versions file should contain an array of version names! Found content: ${JSON.stringify(versionArray)}`);
|
|
50
47
|
}
|
|
51
48
|
versionArray.forEach(ensureValidVersionString);
|
|
52
49
|
}
|
|
53
|
-
|
|
54
|
-
function readVersionsFile(siteDir, pluginId) {
|
|
50
|
+
async function readVersionsFile(siteDir, pluginId) {
|
|
55
51
|
const versionsFilePath = getVersionsFilePath(siteDir, pluginId);
|
|
56
|
-
if (fs_extra_1.default.
|
|
57
|
-
const content = JSON.parse(fs_extra_1.default.
|
|
52
|
+
if (await fs_extra_1.default.pathExists(versionsFilePath)) {
|
|
53
|
+
const content = JSON.parse(await fs_extra_1.default.readFile(versionsFilePath, 'utf8'));
|
|
58
54
|
ensureValidVersionArray(content);
|
|
59
55
|
return content;
|
|
60
56
|
}
|
|
61
|
-
|
|
62
|
-
return null;
|
|
63
|
-
}
|
|
57
|
+
return null;
|
|
64
58
|
}
|
|
65
|
-
|
|
66
|
-
function readVersionNames(siteDir, options) {
|
|
67
|
-
const versionFileContent = readVersionsFile(siteDir, options.id);
|
|
59
|
+
exports.readVersionsFile = readVersionsFile;
|
|
60
|
+
async function readVersionNames(siteDir, options) {
|
|
61
|
+
const versionFileContent = await readVersionsFile(siteDir, options.id);
|
|
68
62
|
if (!versionFileContent && options.disableVersioning) {
|
|
69
|
-
throw new Error(`Docs: using disableVersioning
|
|
63
|
+
throw new Error(`Docs: using "disableVersioning: ${options.disableVersioning}" option on a non-versioned site does not make sense.`);
|
|
70
64
|
}
|
|
71
|
-
const versions = options.disableVersioning ? [] : versionFileContent
|
|
72
|
-
// We add the current version at the beginning, unless
|
|
73
|
-
// - user don't want to
|
|
74
|
-
// - it's been explicitly added to versions.json
|
|
65
|
+
const versions = options.disableVersioning ? [] : versionFileContent ?? [];
|
|
66
|
+
// We add the current version at the beginning, unless:
|
|
67
|
+
// - user don't want to; or
|
|
68
|
+
// - it's already been explicitly added to versions.json
|
|
75
69
|
if (options.includeCurrentVersion &&
|
|
76
70
|
!versions.includes(constants_1.CURRENT_VERSION_NAME)) {
|
|
77
71
|
versions.unshift(constants_1.CURRENT_VERSION_NAME);
|
|
78
72
|
}
|
|
79
73
|
if (versions.length === 0) {
|
|
80
|
-
throw new Error(`It is not possible to use docs without any version. Please check the configuration of these options: includeCurrentVersion
|
|
74
|
+
throw new Error(`It is not possible to use docs without any version. Please check the configuration of these options: "includeCurrentVersion: ${options.includeCurrentVersion}", "disableVersioning: ${options.disableVersioning}".`);
|
|
81
75
|
}
|
|
82
76
|
return versions;
|
|
83
77
|
}
|
|
78
|
+
exports.readVersionNames = readVersionNames;
|
|
84
79
|
function getDocsDirPathLocalized({ siteDir, locale, pluginId, versionName, }) {
|
|
85
|
-
return utils_1.getPluginI18nPath({
|
|
80
|
+
return (0, utils_1.getPluginI18nPath)({
|
|
86
81
|
siteDir,
|
|
87
82
|
locale,
|
|
88
83
|
pluginName: 'docusaurus-plugin-content-docs',
|
|
@@ -96,29 +91,23 @@ function getDocsDirPathLocalized({ siteDir, locale, pluginId, versionName, }) {
|
|
|
96
91
|
}
|
|
97
92
|
function getVersionMetadataPaths({ versionName, context, options, }) {
|
|
98
93
|
const isCurrentVersion = versionName === constants_1.CURRENT_VERSION_NAME;
|
|
99
|
-
const contentPath = isCurrentVersion
|
|
100
|
-
? path_1.default.resolve(context.siteDir, options.path)
|
|
101
|
-
: path_1.default.join(getVersionedDocsDirPath(context.siteDir, options.id), `version-${versionName}`);
|
|
102
94
|
const contentPathLocalized = getDocsDirPathLocalized({
|
|
103
95
|
siteDir: context.siteDir,
|
|
104
96
|
locale: context.i18n.currentLocale,
|
|
105
97
|
pluginId: options.id,
|
|
106
98
|
versionName,
|
|
107
99
|
});
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
return path_1.default.join(getVersionedSidebarsDirPath(context.siteDir, options.id), `version-${versionName}-sidebars.json`);
|
|
116
|
-
}
|
|
100
|
+
if (isCurrentVersion) {
|
|
101
|
+
return {
|
|
102
|
+
contentPath: path_1.default.resolve(context.siteDir, options.path),
|
|
103
|
+
contentPathLocalized,
|
|
104
|
+
sidebarFilePath: (0, sidebars_1.resolveSidebarPathOption)(context.siteDir, options.sidebarPath),
|
|
105
|
+
};
|
|
117
106
|
}
|
|
118
107
|
return {
|
|
119
|
-
contentPath,
|
|
108
|
+
contentPath: path_1.default.join(getVersionedDocsDirPath(context.siteDir, options.id), `version-${versionName}`),
|
|
120
109
|
contentPathLocalized,
|
|
121
|
-
sidebarFilePath:
|
|
110
|
+
sidebarFilePath: path_1.default.join(getVersionedSidebarsDirPath(context.siteDir, options.id), `version-${versionName}-sidebars.json`),
|
|
122
111
|
};
|
|
123
112
|
}
|
|
124
113
|
function getVersionEditUrls({ contentPath, contentPathLocalized, context: { siteDir, i18n }, options: { id, path: currentVersionPath, editUrl, editCurrentVersion }, }) {
|
|
@@ -139,10 +128,10 @@ function getVersionEditUrls({ contentPath, contentPathLocalized, context: { site
|
|
|
139
128
|
pluginId: id,
|
|
140
129
|
})
|
|
141
130
|
: contentPathLocalized;
|
|
142
|
-
const versionPathSegment = utils_1.posixPath(path_1.default.relative(siteDir, path_1.default.resolve(siteDir, editDirPath)));
|
|
143
|
-
const versionPathSegmentLocalized = utils_1.posixPath(path_1.default.relative(siteDir, path_1.default.resolve(siteDir, editDirPathLocalized)));
|
|
144
|
-
const versionEditUrl = utils_1.normalizeUrl([editUrl, versionPathSegment]);
|
|
145
|
-
const versionEditUrlLocalized = utils_1.normalizeUrl([
|
|
131
|
+
const versionPathSegment = (0, utils_1.posixPath)(path_1.default.relative(siteDir, path_1.default.resolve(siteDir, editDirPath)));
|
|
132
|
+
const versionPathSegmentLocalized = (0, utils_1.posixPath)(path_1.default.relative(siteDir, path_1.default.resolve(siteDir, editDirPathLocalized)));
|
|
133
|
+
const versionEditUrl = (0, utils_1.normalizeUrl)([editUrl, versionPathSegment]);
|
|
134
|
+
const versionEditUrlLocalized = (0, utils_1.normalizeUrl)([
|
|
146
135
|
editUrl,
|
|
147
136
|
versionPathSegmentLocalized,
|
|
148
137
|
]);
|
|
@@ -151,24 +140,61 @@ function getVersionEditUrls({ contentPath, contentPathLocalized, context: { site
|
|
|
151
140
|
versionEditUrlLocalized,
|
|
152
141
|
};
|
|
153
142
|
}
|
|
154
|
-
function
|
|
155
|
-
|
|
156
|
-
|
|
143
|
+
function getDefaultVersionBanner({ versionName, versionNames, lastVersionName, }) {
|
|
144
|
+
// Current version: good, no banner
|
|
145
|
+
if (versionName === lastVersionName) {
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
// Upcoming versions: unreleased banner
|
|
149
|
+
if (versionNames.indexOf(versionName) < versionNames.indexOf(lastVersionName)) {
|
|
150
|
+
return 'unreleased';
|
|
151
|
+
}
|
|
152
|
+
// Older versions: display unmaintained banner
|
|
153
|
+
return 'unmaintained';
|
|
154
|
+
}
|
|
155
|
+
exports.getDefaultVersionBanner = getDefaultVersionBanner;
|
|
156
|
+
function getVersionBanner({ versionName, versionNames, lastVersionName, options, }) {
|
|
157
|
+
const versionBannerOption = options.versions[versionName]?.banner;
|
|
158
|
+
if (versionBannerOption) {
|
|
159
|
+
return versionBannerOption === 'none' ? null : versionBannerOption;
|
|
160
|
+
}
|
|
161
|
+
return getDefaultVersionBanner({
|
|
157
162
|
versionName,
|
|
158
|
-
|
|
159
|
-
|
|
163
|
+
versionNames,
|
|
164
|
+
lastVersionName,
|
|
160
165
|
});
|
|
166
|
+
}
|
|
167
|
+
exports.getVersionBanner = getVersionBanner;
|
|
168
|
+
function getVersionBadge({ versionName, versionNames, options, }) {
|
|
169
|
+
const versionBadgeOption = options.versions[versionName]?.badge;
|
|
170
|
+
// If site is not versioned or only one version is included
|
|
171
|
+
// we don't show the version badge by default
|
|
172
|
+
// See https://github.com/facebook/docusaurus/issues/3362
|
|
173
|
+
const versionBadgeDefault = versionNames.length !== 1;
|
|
174
|
+
return versionBadgeOption ?? versionBadgeDefault;
|
|
175
|
+
}
|
|
176
|
+
exports.getVersionBadge = getVersionBadge;
|
|
177
|
+
function getVersionClassName({ versionName, options, }) {
|
|
178
|
+
const versionClassNameOption = options.versions[versionName]?.className;
|
|
179
|
+
const versionClassNameDefault = `docs-version-${versionName}`;
|
|
180
|
+
return versionClassNameOption ?? versionClassNameDefault;
|
|
181
|
+
}
|
|
182
|
+
function createVersionMetadata({ versionName, versionNames, lastVersionName, context, options, }) {
|
|
183
|
+
const { sidebarFilePath, contentPath, contentPathLocalized } = getVersionMetadataPaths({ versionName, context, options });
|
|
184
|
+
const isLast = versionName === lastVersionName;
|
|
161
185
|
// retro-compatible values
|
|
162
186
|
const defaultVersionLabel = versionName === constants_1.CURRENT_VERSION_NAME ? 'Next' : versionName;
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
const
|
|
170
|
-
const
|
|
171
|
-
const
|
|
187
|
+
function getDefaultVersionPathPart() {
|
|
188
|
+
if (isLast) {
|
|
189
|
+
return '';
|
|
190
|
+
}
|
|
191
|
+
return versionName === constants_1.CURRENT_VERSION_NAME ? 'next' : versionName;
|
|
192
|
+
}
|
|
193
|
+
const defaultVersionPathPart = getDefaultVersionPathPart();
|
|
194
|
+
const versionOptions = options.versions[versionName] ?? {};
|
|
195
|
+
const versionLabel = versionOptions.label ?? defaultVersionLabel;
|
|
196
|
+
const versionPathPart = versionOptions.path ?? defaultVersionPathPart;
|
|
197
|
+
const versionPath = (0, utils_1.normalizeUrl)([
|
|
172
198
|
context.baseUrl,
|
|
173
199
|
options.routeBasePath,
|
|
174
200
|
versionPathPart,
|
|
@@ -181,12 +207,24 @@ function createVersionMetadata({ versionName, isLast, context, options, }) {
|
|
|
181
207
|
});
|
|
182
208
|
// Because /docs/:route` should always be after `/docs/versionName/:route`.
|
|
183
209
|
const routePriority = versionPathPart === '' ? -1 : undefined;
|
|
210
|
+
// the path that will be used to refer the docs tags
|
|
211
|
+
// example below will be using /docs/tags
|
|
212
|
+
const tagsPath = (0, utils_1.normalizeUrl)([versionPath, options.tagsBasePath]);
|
|
184
213
|
return {
|
|
185
214
|
versionName,
|
|
186
215
|
versionLabel,
|
|
187
216
|
versionPath,
|
|
188
|
-
|
|
189
|
-
|
|
217
|
+
tagsPath,
|
|
218
|
+
versionEditUrl: versionEditUrls?.versionEditUrl,
|
|
219
|
+
versionEditUrlLocalized: versionEditUrls?.versionEditUrlLocalized,
|
|
220
|
+
versionBanner: getVersionBanner({
|
|
221
|
+
versionName,
|
|
222
|
+
versionNames,
|
|
223
|
+
lastVersionName,
|
|
224
|
+
options,
|
|
225
|
+
}),
|
|
226
|
+
versionBadge: getVersionBadge({ versionName, versionNames, options }),
|
|
227
|
+
versionClassName: getVersionClassName({ versionName, options }),
|
|
190
228
|
isLast,
|
|
191
229
|
routePriority,
|
|
192
230
|
sidebarFilePath,
|
|
@@ -194,25 +232,26 @@ function createVersionMetadata({ versionName, isLast, context, options, }) {
|
|
|
194
232
|
contentPathLocalized,
|
|
195
233
|
};
|
|
196
234
|
}
|
|
197
|
-
function checkVersionMetadataPaths({ versionMetadata, context, }) {
|
|
235
|
+
async function checkVersionMetadataPaths({ versionMetadata, context, }) {
|
|
198
236
|
const { versionName, contentPath, sidebarFilePath } = versionMetadata;
|
|
199
237
|
const { siteDir } = context;
|
|
200
238
|
const isCurrentVersion = versionName === constants_1.CURRENT_VERSION_NAME;
|
|
201
|
-
if (!fs_extra_1.default.
|
|
202
|
-
throw new Error(`The docs folder does not exist for version
|
|
239
|
+
if (!(await fs_extra_1.default.pathExists(contentPath))) {
|
|
240
|
+
throw new Error(`The docs folder does not exist for version "${versionName}". A docs folder is expected to be found at ${path_1.default.relative(siteDir, contentPath)}.`);
|
|
203
241
|
}
|
|
204
|
-
// If the current version defines a path to a sidebar file
|
|
205
|
-
// Note: for versioned sidebars, the file may not exist (as
|
|
242
|
+
// If the current version defines a path to a sidebar file that does not
|
|
243
|
+
// exist, we throw! Note: for versioned sidebars, the file may not exist (as
|
|
244
|
+
// we prefer to not create it rather than to create an empty file)
|
|
206
245
|
// See https://github.com/facebook/docusaurus/issues/3366
|
|
207
246
|
// See https://github.com/facebook/docusaurus/pull/4775
|
|
208
247
|
if (isCurrentVersion &&
|
|
209
248
|
typeof sidebarFilePath === 'string' &&
|
|
210
|
-
!fs_extra_1.default.
|
|
211
|
-
throw new Error(`The path to the sidebar file does not exist at
|
|
212
|
-
Please set the docs
|
|
249
|
+
!(await fs_extra_1.default.pathExists(sidebarFilePath))) {
|
|
250
|
+
throw new Error(`The path to the sidebar file does not exist at "${path_1.default.relative(siteDir, sidebarFilePath)}".
|
|
251
|
+
Please set the docs "sidebarPath" field in your config file to:
|
|
213
252
|
- a sidebars path that exists
|
|
214
253
|
- false: to disable the sidebar
|
|
215
|
-
- undefined: for Docusaurus
|
|
254
|
+
- undefined: for Docusaurus to generate it automatically`);
|
|
216
255
|
}
|
|
217
256
|
}
|
|
218
257
|
// TODO for retrocompatibility with existing behavior
|
|
@@ -222,59 +261,57 @@ function getDefaultLastVersionName(versionNames) {
|
|
|
222
261
|
if (versionNames.length === 1) {
|
|
223
262
|
return versionNames[0];
|
|
224
263
|
}
|
|
225
|
-
|
|
226
|
-
return versionNames.filter((versionName) => versionName !== constants_1.CURRENT_VERSION_NAME)[0];
|
|
227
|
-
}
|
|
264
|
+
return versionNames.filter((versionName) => versionName !== constants_1.CURRENT_VERSION_NAME)[0];
|
|
228
265
|
}
|
|
229
266
|
function checkVersionsOptions(availableVersionNames, options) {
|
|
230
267
|
const availableVersionNamesMsg = `Available version names are: ${availableVersionNames.join(', ')}`;
|
|
231
268
|
if (options.lastVersion &&
|
|
232
269
|
!availableVersionNames.includes(options.lastVersion)) {
|
|
233
|
-
throw new Error(`Docs option lastVersion
|
|
270
|
+
throw new Error(`Docs option lastVersion: ${options.lastVersion} is invalid. ${availableVersionNamesMsg}`);
|
|
234
271
|
}
|
|
235
|
-
const unknownVersionConfigNames = lodash_1.difference(Object.keys(options.versions), availableVersionNames);
|
|
272
|
+
const unknownVersionConfigNames = lodash_1.default.difference(Object.keys(options.versions), availableVersionNames);
|
|
236
273
|
if (unknownVersionConfigNames.length > 0) {
|
|
237
|
-
throw new Error(`
|
|
274
|
+
throw new Error(`Invalid docs option "versions": unknown versions (${unknownVersionConfigNames.join(',')}) found. ${availableVersionNamesMsg}`);
|
|
238
275
|
}
|
|
239
276
|
if (options.onlyIncludeVersions) {
|
|
240
277
|
if (options.onlyIncludeVersions.length === 0) {
|
|
241
|
-
throw new Error(`
|
|
278
|
+
throw new Error(`Invalid docs option "onlyIncludeVersions": an empty array is not allowed, at least one version is needed.`);
|
|
242
279
|
}
|
|
243
|
-
const unknownOnlyIncludeVersionNames = lodash_1.difference(options.onlyIncludeVersions, availableVersionNames);
|
|
280
|
+
const unknownOnlyIncludeVersionNames = lodash_1.default.difference(options.onlyIncludeVersions, availableVersionNames);
|
|
244
281
|
if (unknownOnlyIncludeVersionNames.length > 0) {
|
|
245
|
-
throw new Error(`
|
|
282
|
+
throw new Error(`Invalid docs option "onlyIncludeVersions": unknown versions (${unknownOnlyIncludeVersionNames.join(',')}) found. ${availableVersionNamesMsg}`);
|
|
246
283
|
}
|
|
247
284
|
if (options.lastVersion &&
|
|
248
285
|
!options.onlyIncludeVersions.includes(options.lastVersion)) {
|
|
249
|
-
throw new Error(`
|
|
286
|
+
throw new Error(`Invalid docs option "lastVersion": if you use both the "onlyIncludeVersions" and "lastVersion" options, then "lastVersion" must be present in the provided "onlyIncludeVersions" array.`);
|
|
250
287
|
}
|
|
251
288
|
}
|
|
252
289
|
}
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
290
|
+
/**
|
|
291
|
+
* Filter versions according to provided options.
|
|
292
|
+
* Note: we preserve the order in which versions are provided;
|
|
293
|
+
* the order of the onlyIncludeVersions array does not matter
|
|
294
|
+
*/
|
|
256
295
|
function filterVersions(versionNamesUnfiltered, options) {
|
|
257
296
|
if (options.onlyIncludeVersions) {
|
|
258
|
-
return versionNamesUnfiltered.filter((name) =>
|
|
259
|
-
}
|
|
260
|
-
else {
|
|
261
|
-
return versionNamesUnfiltered;
|
|
297
|
+
return versionNamesUnfiltered.filter((name) => options.onlyIncludeVersions.includes(name));
|
|
262
298
|
}
|
|
299
|
+
return versionNamesUnfiltered;
|
|
263
300
|
}
|
|
264
|
-
|
|
265
|
-
function readVersionsMetadata({ context, options, }) {
|
|
266
|
-
|
|
267
|
-
const versionNamesUnfiltered = readVersionNames(context.siteDir, options);
|
|
301
|
+
exports.filterVersions = filterVersions;
|
|
302
|
+
async function readVersionsMetadata({ context, options, }) {
|
|
303
|
+
const versionNamesUnfiltered = await readVersionNames(context.siteDir, options);
|
|
268
304
|
checkVersionsOptions(versionNamesUnfiltered, options);
|
|
269
305
|
const versionNames = filterVersions(versionNamesUnfiltered, options);
|
|
270
|
-
const lastVersionName =
|
|
306
|
+
const lastVersionName = options.lastVersion ?? getDefaultLastVersionName(versionNames);
|
|
271
307
|
const versionsMetadata = versionNames.map((versionName) => createVersionMetadata({
|
|
272
308
|
versionName,
|
|
273
|
-
|
|
309
|
+
versionNames,
|
|
310
|
+
lastVersionName,
|
|
274
311
|
context,
|
|
275
312
|
options,
|
|
276
313
|
}));
|
|
277
|
-
versionsMetadata.
|
|
314
|
+
await Promise.all(versionsMetadata.map((versionMetadata) => checkVersionMetadataPaths({ versionMetadata, context })));
|
|
278
315
|
return versionsMetadata;
|
|
279
316
|
}
|
|
280
317
|
exports.readVersionsMetadata = readVersionsMetadata;
|
package/package.json
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@docusaurus/plugin-content-docs",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.18",
|
|
4
4
|
"description": "Docs plugin for Docusaurus.",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
|
+
"exports": {
|
|
7
|
+
"./client": "./lib/client/index.js",
|
|
8
|
+
"./server": "./lib/server-export.js",
|
|
9
|
+
".": "./lib/index.js"
|
|
10
|
+
},
|
|
6
11
|
"types": "src/plugin-content-docs.d.ts",
|
|
7
12
|
"scripts": {
|
|
8
13
|
"build": "tsc",
|
|
@@ -17,40 +22,39 @@
|
|
|
17
22
|
"directory": "packages/docusaurus-plugin-content-docs"
|
|
18
23
|
},
|
|
19
24
|
"license": "MIT",
|
|
20
|
-
"devDependencies": {
|
|
21
|
-
"@docusaurus/module-type-aliases": "2.0.0-beta.15d451942",
|
|
22
|
-
"@types/js-yaml": "^4.0.0",
|
|
23
|
-
"@types/picomatch": "^2.2.1",
|
|
24
|
-
"commander": "^5.1.0",
|
|
25
|
-
"picomatch": "^2.1.1"
|
|
26
|
-
},
|
|
27
25
|
"dependencies": {
|
|
28
|
-
"@docusaurus/core": "2.0.0-beta.
|
|
29
|
-
"@docusaurus/
|
|
30
|
-
"@docusaurus/
|
|
31
|
-
"@docusaurus/utils": "2.0.0-beta.
|
|
32
|
-
"@docusaurus/utils-validation": "2.0.0-beta.
|
|
33
|
-
"chalk": "^4.1.1",
|
|
26
|
+
"@docusaurus/core": "2.0.0-beta.18",
|
|
27
|
+
"@docusaurus/logger": "2.0.0-beta.18",
|
|
28
|
+
"@docusaurus/mdx-loader": "2.0.0-beta.18",
|
|
29
|
+
"@docusaurus/utils": "2.0.0-beta.18",
|
|
30
|
+
"@docusaurus/utils-validation": "2.0.0-beta.18",
|
|
34
31
|
"combine-promises": "^1.1.0",
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"js-yaml": "^4.0.0",
|
|
40
|
-
"loader-utils": "^1.2.3",
|
|
41
|
-
"lodash": "^4.17.20",
|
|
32
|
+
"fs-extra": "^10.0.1",
|
|
33
|
+
"import-fresh": "^3.3.0",
|
|
34
|
+
"js-yaml": "^4.1.0",
|
|
35
|
+
"lodash": "^4.17.21",
|
|
42
36
|
"remark-admonitions": "^1.2.1",
|
|
43
|
-
"
|
|
44
|
-
"tslib": "^2.2.0",
|
|
37
|
+
"tslib": "^2.3.1",
|
|
45
38
|
"utility-types": "^3.10.0",
|
|
46
|
-
"webpack": "^5.
|
|
39
|
+
"webpack": "^5.70.0"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@docusaurus/module-type-aliases": "2.0.0-beta.18",
|
|
43
|
+
"@docusaurus/types": "2.0.0-beta.18",
|
|
44
|
+
"@types/js-yaml": "^4.0.5",
|
|
45
|
+
"@types/picomatch": "^2.3.0",
|
|
46
|
+
"commander": "^5.1.0",
|
|
47
|
+
"escape-string-regexp": "^4.0.0",
|
|
48
|
+
"picomatch": "^2.3.1",
|
|
49
|
+
"shelljs": "^0.8.5",
|
|
50
|
+
"utility-types": "^3.10.0"
|
|
47
51
|
},
|
|
48
52
|
"peerDependencies": {
|
|
49
53
|
"react": "^16.8.4 || ^17.0.0",
|
|
50
54
|
"react-dom": "^16.8.4 || ^17.0.0"
|
|
51
55
|
},
|
|
52
56
|
"engines": {
|
|
53
|
-
"node": ">=
|
|
57
|
+
"node": ">=14"
|
|
54
58
|
},
|
|
55
|
-
"gitHead": "
|
|
59
|
+
"gitHead": "1a945d06993d53376e61bed2c942799fe07dc336"
|
|
56
60
|
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type {CategoryGeneratedIndexMetadata, DocMetadataBase} from './types';
|
|
9
|
+
import type {SidebarItemCategoryWithGeneratedIndex} from './sidebars/types';
|
|
10
|
+
import {type SidebarsUtils, toNavigationLink} from './sidebars/utils';
|
|
11
|
+
import {createDocsByIdIndex} from './docs';
|
|
12
|
+
|
|
13
|
+
function getCategoryGeneratedIndexMetadata({
|
|
14
|
+
category,
|
|
15
|
+
sidebarsUtils,
|
|
16
|
+
docsById,
|
|
17
|
+
}: {
|
|
18
|
+
category: SidebarItemCategoryWithGeneratedIndex;
|
|
19
|
+
sidebarsUtils: SidebarsUtils;
|
|
20
|
+
docsById: {[docId: string]: DocMetadataBase};
|
|
21
|
+
}): CategoryGeneratedIndexMetadata {
|
|
22
|
+
const {sidebarName, previous, next} =
|
|
23
|
+
sidebarsUtils.getCategoryGeneratedIndexNavigation(category.link.permalink);
|
|
24
|
+
return {
|
|
25
|
+
title: category.link.title ?? category.label,
|
|
26
|
+
description: category.link.description,
|
|
27
|
+
image: category.link.image,
|
|
28
|
+
keywords: category.link.keywords,
|
|
29
|
+
slug: category.link.slug,
|
|
30
|
+
permalink: category.link.permalink,
|
|
31
|
+
sidebar: sidebarName!,
|
|
32
|
+
previous: toNavigationLink(previous, docsById),
|
|
33
|
+
next: toNavigationLink(next, docsById),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function getCategoryGeneratedIndexMetadataList({
|
|
38
|
+
docs,
|
|
39
|
+
sidebarsUtils,
|
|
40
|
+
}: {
|
|
41
|
+
sidebarsUtils: SidebarsUtils;
|
|
42
|
+
docs: DocMetadataBase[];
|
|
43
|
+
}): CategoryGeneratedIndexMetadata[] {
|
|
44
|
+
const docsById = createDocsByIdIndex(docs);
|
|
45
|
+
|
|
46
|
+
const categoryGeneratedIndexItems =
|
|
47
|
+
sidebarsUtils.getCategoryGeneratedIndexList();
|
|
48
|
+
return categoryGeneratedIndexItems.map((category) =>
|
|
49
|
+
getCategoryGeneratedIndexMetadata({
|
|
50
|
+
category,
|
|
51
|
+
sidebarsUtils,
|
|
52
|
+
docsById,
|
|
53
|
+
}),
|
|
54
|
+
);
|
|
55
|
+
}
|