@docusaurus/plugin-content-docs 2.0.0-beta.fc64c12e4 → 2.0.0
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 +57 -73
- package/lib/client/docsClientUtils.d.ts +9 -28
- package/lib/client/docsClientUtils.js +34 -43
- package/lib/client/index.d.ts +81 -0
- package/lib/client/index.js +67 -0
- package/lib/constants.d.ts +4 -0
- package/lib/constants.js +4 -1
- package/lib/docs.d.ts +33 -6
- package/lib/docs.js +201 -78
- package/{src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docusaurus.config.js → lib/frontMatter.d.ts} +4 -8
- package/lib/{docFrontMatter.js → frontMatter.js} +22 -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 +120 -153
- 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 +34 -26
- package/lib/props.d.ts +7 -2
- package/lib/props.js +84 -13
- package/lib/routes.d.ts +29 -0
- package/lib/routes.js +96 -0
- package/lib/server-export.d.ts +9 -0
- package/lib/server-export.js +25 -0
- package/lib/{sidebarItemsGenerator.d.ts → sidebars/generator.d.ts} +1 -7
- package/lib/sidebars/generator.js +209 -0
- package/lib/sidebars/index.d.ts +13 -0
- package/lib/sidebars/index.js +92 -0
- package/lib/sidebars/normalization.d.ts +13 -0
- package/lib/sidebars/normalization.js +59 -0
- package/lib/sidebars/postProcessor.d.ts +11 -0
- package/lib/sidebars/postProcessor.js +81 -0
- package/lib/sidebars/processor.d.ts +10 -0
- package/lib/sidebars/processor.js +79 -0
- package/lib/sidebars/types.d.ts +183 -0
- package/lib/{docFrontMatter.d.ts → sidebars/types.js} +2 -2
- package/lib/sidebars/utils.d.ts +55 -0
- package/lib/sidebars/utils.js +259 -0
- package/lib/sidebars/validation.d.ts +11 -0
- package/lib/sidebars/validation.js +143 -0
- package/lib/slug.d.ts +5 -4
- package/lib/slug.js +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 +100 -93
- package/lib/types.d.ts +13 -192
- package/lib/versions/files.d.ts +50 -0
- package/lib/versions/files.js +141 -0
- package/lib/versions/index.d.ts +36 -0
- package/lib/versions/index.js +154 -0
- package/lib/versions/validation.d.ts +17 -0
- package/lib/versions/validation.js +71 -0
- package/package.json +44 -30
- package/src/categoryGeneratedIndex.ts +60 -0
- package/src/cli.ts +88 -118
- package/src/client/docsClientUtils.ts +44 -71
- package/src/client/index.ts +158 -0
- package/src/constants.ts +4 -2
- package/src/docs.ts +277 -80
- package/src/frontMatter.ts +63 -0
- package/src/globalData.ts +57 -7
- package/src/index.ts +174 -221
- package/src/lastUpdate.ts +27 -38
- package/src/markdown/index.ts +10 -16
- package/src/markdown/linkify.ts +7 -4
- package/src/numberPrefix.ts +19 -26
- package/src/options.ts +38 -38
- package/src/plugin-content-docs.d.ts +570 -91
- package/src/props.ts +121 -20
- package/src/routes.ts +159 -0
- package/src/server-export.ts +26 -0
- package/src/sidebars/README.md +10 -0
- package/src/sidebars/generator.ts +292 -0
- package/src/sidebars/index.ts +118 -0
- package/src/sidebars/normalization.ts +91 -0
- package/src/sidebars/postProcessor.ts +112 -0
- package/src/sidebars/processor.ts +123 -0
- package/src/sidebars/types.ts +280 -0
- package/src/sidebars/utils.ts +393 -0
- package/src/sidebars/validation.ts +179 -0
- package/src/slug.ts +41 -22
- package/src/tags.ts +20 -0
- package/src/translations.ts +155 -124
- package/src/types.ts +17 -259
- package/src/versions/files.ts +216 -0
- package/src/versions/index.ts +246 -0
- package/src/versions/validation.ts +115 -0
- package/lib/.tsbuildinfo +0 -1
- package/lib/sidebarItemsGenerator.js +0 -215
- package/lib/sidebars.d.ts +0 -45
- package/lib/sidebars.js +0 -354
- 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/_partials/somePartial.md +0 -3
- package/src/__tests__/__fixtures__/simple-site/docs/_partials/subfolder/somePartial.md +0 -3
- package/src/__tests__/__fixtures__/simple-site/docs/_somePartial.md +0 -3
- 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/_partials/somePartial.md +0 -3
- package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.1/_partials/subfolder/somePartial.md +0 -3
- package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.1/_somePartial.md +0 -3
- 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 -95
- package/src/__tests__/__snapshots__/index.test.ts.snap +0 -1926
- package/src/__tests__/__snapshots__/sidebars.test.ts.snap +0 -233
- package/src/__tests__/__snapshots__/translations.test.ts.snap +0 -484
- package/src/__tests__/cli.test.ts +0 -337
- package/src/__tests__/docFrontMatter.test.ts +0 -244
- package/src/__tests__/docs.test.ts +0 -878
- package/src/__tests__/index.test.ts +0 -1885
- package/src/__tests__/lastUpdate.test.ts +0 -69
- package/src/__tests__/numberPrefix.test.ts +0 -199
- package/src/__tests__/options.test.ts +0 -272
- package/src/__tests__/sidebarItemsGenerator.test.ts +0 -358
- package/src/__tests__/sidebars.test.ts +0 -746
- package/src/__tests__/slug.test.ts +0 -109
- package/src/__tests__/translations.test.ts +0 -158
- package/src/__tests__/versions.test.ts +0 -741
- package/src/client/__tests__/docsClientUtils.test.ts +0 -371
- package/src/docFrontMatter.ts +0 -41
- 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 -315
- package/src/sidebars.ts +0 -589
- package/src/theme/hooks/useDocs.ts +0 -103
- package/src/versions.ts +0 -572
- package/tsconfig.json +0 -9
- package/types.d.ts +0 -13
package/lib/docs.js
CHANGED
|
@@ -6,84 +6,93 @@
|
|
|
6
6
|
* LICENSE file in the root directory of this source tree.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.processDocMetadata = exports.readVersionDocs = exports.readDocFile = void 0;
|
|
9
|
+
exports.createDocsByIdIndex = exports.getDocIds = exports.toCategoryIndexMatcherParam = exports.isCategoryIndex = exports.getMainDocId = exports.addDocNavigation = exports.processDocMetadata = exports.readVersionDocs = exports.readDocFile = 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
|
+
const logger_1 = tslib_1.__importDefault(require("@docusaurus/logger"));
|
|
13
14
|
const utils_1 = require("@docusaurus/utils");
|
|
14
15
|
const lastUpdate_1 = require("./lastUpdate");
|
|
15
16
|
const slug_1 = tslib_1.__importDefault(require("./slug"));
|
|
16
17
|
const constants_1 = require("./constants");
|
|
17
|
-
const versions_1 = require("./versions");
|
|
18
18
|
const numberPrefix_1 = require("./numberPrefix");
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
async function readLastUpdateData(filePath, options) {
|
|
19
|
+
const frontMatter_1 = require("./frontMatter");
|
|
20
|
+
const utils_2 = require("./sidebars/utils");
|
|
21
|
+
async function readLastUpdateData(filePath, options, lastUpdateFrontMatter) {
|
|
22
22
|
const { showLastUpdateAuthor, showLastUpdateTime } = options;
|
|
23
23
|
if (showLastUpdateAuthor || showLastUpdateTime) {
|
|
24
|
+
const frontMatterTimestamp = lastUpdateFrontMatter?.date
|
|
25
|
+
? new Date(lastUpdateFrontMatter.date).getTime() / 1000
|
|
26
|
+
: undefined;
|
|
27
|
+
if (lastUpdateFrontMatter?.author && lastUpdateFrontMatter.date) {
|
|
28
|
+
return {
|
|
29
|
+
lastUpdatedAt: frontMatterTimestamp,
|
|
30
|
+
lastUpdatedBy: lastUpdateFrontMatter.author,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
24
33
|
// Use fake data in dev for faster development.
|
|
25
34
|
const fileLastUpdateData = process.env.NODE_ENV === 'production'
|
|
26
|
-
? await lastUpdate_1.getFileLastUpdate(filePath)
|
|
35
|
+
? await (0, lastUpdate_1.getFileLastUpdate)(filePath)
|
|
27
36
|
: {
|
|
28
37
|
author: 'Author',
|
|
29
38
|
timestamp: 1539502055,
|
|
30
39
|
};
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
40
|
+
const { author, timestamp } = fileLastUpdateData ?? {};
|
|
41
|
+
return {
|
|
42
|
+
lastUpdatedBy: showLastUpdateAuthor
|
|
43
|
+
? lastUpdateFrontMatter?.author ?? author
|
|
44
|
+
: undefined,
|
|
45
|
+
lastUpdatedAt: showLastUpdateTime
|
|
46
|
+
? frontMatterTimestamp ?? timestamp
|
|
47
|
+
: undefined,
|
|
48
|
+
};
|
|
38
49
|
}
|
|
39
50
|
return {};
|
|
40
51
|
}
|
|
41
|
-
async function readDocFile(versionMetadata, source
|
|
42
|
-
const contentPath = await utils_1.getFolderContainingFile(
|
|
52
|
+
async function readDocFile(versionMetadata, source) {
|
|
53
|
+
const contentPath = await (0, utils_1.getFolderContainingFile)((0, utils_1.getContentPathList)(versionMetadata), source);
|
|
43
54
|
const filePath = path_1.default.join(contentPath, source);
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
readLastUpdateData(filePath, options),
|
|
47
|
-
]);
|
|
48
|
-
return { source, content, lastUpdate, contentPath, filePath };
|
|
55
|
+
const content = await fs_extra_1.default.readFile(filePath, 'utf-8');
|
|
56
|
+
return { source, content, contentPath, filePath };
|
|
49
57
|
}
|
|
50
58
|
exports.readDocFile = readDocFile;
|
|
51
59
|
async function readVersionDocs(versionMetadata, options) {
|
|
52
|
-
const sources = await utils_1.Globby(options.include, {
|
|
60
|
+
const sources = await (0, utils_1.Globby)(options.include, {
|
|
53
61
|
cwd: versionMetadata.contentPath,
|
|
54
62
|
ignore: options.exclude,
|
|
55
63
|
});
|
|
56
|
-
return Promise.all(sources.map((source) => readDocFile(versionMetadata, source
|
|
64
|
+
return Promise.all(sources.map((source) => readDocFile(versionMetadata, source)));
|
|
57
65
|
}
|
|
58
66
|
exports.readVersionDocs = readVersionDocs;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
67
|
+
/** Docs with draft front matter are only considered draft in production. */
|
|
68
|
+
function isDraftForEnvironment({ env, frontMatter, }) {
|
|
69
|
+
return (env === 'production' && frontMatter.draft) ?? false;
|
|
70
|
+
}
|
|
71
|
+
async function doProcessDocMetadata({ docFile, versionMetadata, context, options, env, }) {
|
|
72
|
+
const { source, content, contentPath, filePath } = docFile;
|
|
63
73
|
const { siteDir, i18n } = context;
|
|
64
|
-
const { frontMatter: unsafeFrontMatter, contentTitle, excerpt, } = utils_1.parseMarkdownString(content);
|
|
65
|
-
const frontMatter =
|
|
74
|
+
const { frontMatter: unsafeFrontMatter, contentTitle, excerpt, } = (0, utils_1.parseMarkdownString)(content);
|
|
75
|
+
const frontMatter = (0, frontMatter_1.validateDocFrontMatter)(unsafeFrontMatter);
|
|
66
76
|
const { custom_edit_url: customEditURL,
|
|
67
|
-
// Strip number prefixes by default
|
|
68
|
-
//
|
|
69
|
-
//
|
|
70
|
-
parse_number_prefixes = true, } = frontMatter;
|
|
71
|
-
|
|
72
|
-
//
|
|
77
|
+
// Strip number prefixes by default
|
|
78
|
+
// (01-MyFolder/01-MyDoc.md => MyFolder/MyDoc)
|
|
79
|
+
// but allow to disable this behavior with front matter
|
|
80
|
+
parse_number_prefixes: parseNumberPrefixes = true, last_update: lastUpdateFrontMatter, } = frontMatter;
|
|
81
|
+
const lastUpdate = await readLastUpdateData(filePath, options, lastUpdateFrontMatter);
|
|
82
|
+
// E.g. api/plugins/myDoc -> myDoc; myDoc -> myDoc
|
|
73
83
|
const sourceFileNameWithoutExtension = path_1.default.basename(source, path_1.default.extname(source));
|
|
74
|
-
//
|
|
75
|
-
// ex: myDoc -> .
|
|
84
|
+
// E.g. api/plugins/myDoc -> api/plugins; myDoc -> .
|
|
76
85
|
const sourceDirName = path_1.default.dirname(source);
|
|
77
|
-
|
|
78
|
-
const { filename: unprefixedFileName, numberPrefix } = parse_number_prefixes
|
|
86
|
+
const { filename: unprefixedFileName, numberPrefix } = parseNumberPrefixes
|
|
79
87
|
? options.numberPrefixParser(sourceFileNameWithoutExtension)
|
|
80
88
|
: { filename: sourceFileNameWithoutExtension, numberPrefix: undefined };
|
|
81
|
-
const baseID =
|
|
89
|
+
const baseID = frontMatter.id ?? unprefixedFileName;
|
|
82
90
|
if (baseID.includes('/')) {
|
|
83
91
|
throw new Error(`Document id "${baseID}" cannot include slash.`);
|
|
84
92
|
}
|
|
85
|
-
// For autogenerated sidebars, sidebar position can come from filename number
|
|
86
|
-
|
|
93
|
+
// For autogenerated sidebars, sidebar position can come from filename number
|
|
94
|
+
// prefix or front matter
|
|
95
|
+
const sidebarPosition = frontMatter.sidebar_position ?? numberPrefix;
|
|
87
96
|
// TODO legacy retrocompatibility
|
|
88
97
|
// The same doc in 2 distinct version could keep the same id,
|
|
89
98
|
// we just need to namespace the data by version
|
|
@@ -91,15 +100,14 @@ function doProcessDocMetadata({ docFile, versionMetadata, context, options, }) {
|
|
|
91
100
|
? undefined
|
|
92
101
|
: `version-${versionMetadata.versionName}`;
|
|
93
102
|
// TODO legacy retrocompatibility
|
|
94
|
-
// I think it's bad to affect the
|
|
103
|
+
// I think it's bad to affect the front matter id with the dirname?
|
|
95
104
|
function computeDirNameIdPrefix() {
|
|
96
105
|
if (sourceDirName === '.') {
|
|
97
106
|
return undefined;
|
|
98
107
|
}
|
|
99
108
|
// Eventually remove the number prefixes from intermediate directories
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
? numberPrefix_1.stripPathNumberPrefixes(sourceDirName, options.numberPrefixParser)
|
|
109
|
+
return parseNumberPrefixes
|
|
110
|
+
? (0, numberPrefix_1.stripPathNumberPrefixes)(sourceDirName, options.numberPrefixParser)
|
|
103
111
|
: sourceDirName;
|
|
104
112
|
}
|
|
105
113
|
const unversionedId = [computeDirNameIdPrefix(), baseID]
|
|
@@ -108,32 +116,27 @@ function doProcessDocMetadata({ docFile, versionMetadata, context, options, }) {
|
|
|
108
116
|
// TODO is versioning the id very useful in practice?
|
|
109
117
|
// legacy versioned id, requires a breaking change to modify this
|
|
110
118
|
const id = [versionIdPrefix, unversionedId].filter(Boolean).join('/');
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
// Note: the title is used by default for page title, sidebar label, pagination buttons...
|
|
126
|
-
// frontMatter.title should be used in priority over contentTitle (because it can contain markdown/JSX syntax)
|
|
127
|
-
const title = (_d = (_c = frontMatter.title) !== null && _c !== void 0 ? _c : contentTitle) !== null && _d !== void 0 ? _d : baseID;
|
|
128
|
-
const description = (_f = (_e = frontMatter.description) !== null && _e !== void 0 ? _e : excerpt) !== null && _f !== void 0 ? _f : '';
|
|
129
|
-
const permalink = utils_1.normalizeUrl([versionMetadata.versionPath, docSlug]);
|
|
119
|
+
const docSlug = (0, slug_1.default)({
|
|
120
|
+
baseID,
|
|
121
|
+
source,
|
|
122
|
+
sourceDirName,
|
|
123
|
+
frontMatterSlug: frontMatter.slug,
|
|
124
|
+
stripDirNumberPrefixes: parseNumberPrefixes,
|
|
125
|
+
numberPrefixParser: options.numberPrefixParser,
|
|
126
|
+
});
|
|
127
|
+
// Note: the title is used by default for page title, sidebar label,
|
|
128
|
+
// pagination buttons... frontMatter.title should be used in priority over
|
|
129
|
+
// contentTitle (because it can contain markdown/JSX syntax)
|
|
130
|
+
const title = frontMatter.title ?? contentTitle ?? baseID;
|
|
131
|
+
const description = frontMatter.description ?? excerpt ?? '';
|
|
132
|
+
const permalink = (0, utils_1.normalizeUrl)([versionMetadata.path, docSlug]);
|
|
130
133
|
function getDocEditUrl() {
|
|
131
134
|
const relativeFilePath = path_1.default.relative(contentPath, filePath);
|
|
132
135
|
if (typeof options.editUrl === 'function') {
|
|
133
136
|
return options.editUrl({
|
|
134
137
|
version: versionMetadata.versionName,
|
|
135
|
-
versionDocsDirPath: utils_1.posixPath(path_1.default.relative(siteDir, versionMetadata.contentPath)),
|
|
136
|
-
docPath: utils_1.posixPath(relativeFilePath),
|
|
138
|
+
versionDocsDirPath: (0, utils_1.posixPath)(path_1.default.relative(siteDir, versionMetadata.contentPath)),
|
|
139
|
+
docPath: (0, utils_1.posixPath)(relativeFilePath),
|
|
137
140
|
permalink,
|
|
138
141
|
locale: context.i18n.currentLocale,
|
|
139
142
|
});
|
|
@@ -141,14 +144,28 @@ function doProcessDocMetadata({ docFile, versionMetadata, context, options, }) {
|
|
|
141
144
|
else if (typeof options.editUrl === 'string') {
|
|
142
145
|
const isLocalized = contentPath === versionMetadata.contentPathLocalized;
|
|
143
146
|
const baseVersionEditUrl = isLocalized && options.editLocalizedFiles
|
|
144
|
-
? versionMetadata.
|
|
145
|
-
: versionMetadata.
|
|
146
|
-
return utils_1.getEditUrl(relativeFilePath, baseVersionEditUrl);
|
|
147
|
-
}
|
|
148
|
-
else {
|
|
149
|
-
return undefined;
|
|
147
|
+
? versionMetadata.editUrlLocalized
|
|
148
|
+
: versionMetadata.editUrl;
|
|
149
|
+
return (0, utils_1.getEditUrl)(relativeFilePath, baseVersionEditUrl);
|
|
150
150
|
}
|
|
151
|
+
return undefined;
|
|
151
152
|
}
|
|
153
|
+
const draft = isDraftForEnvironment({ env, frontMatter });
|
|
154
|
+
const formatDate = (locale, date, calendar) => {
|
|
155
|
+
try {
|
|
156
|
+
return new Intl.DateTimeFormat(locale, {
|
|
157
|
+
day: 'numeric',
|
|
158
|
+
month: 'short',
|
|
159
|
+
year: 'numeric',
|
|
160
|
+
timeZone: 'UTC',
|
|
161
|
+
calendar,
|
|
162
|
+
}).format(date);
|
|
163
|
+
}
|
|
164
|
+
catch (err) {
|
|
165
|
+
logger_1.default.error `Can't format docs lastUpdatedAt date "${String(date)}"`;
|
|
166
|
+
throw err;
|
|
167
|
+
}
|
|
168
|
+
};
|
|
152
169
|
// Assign all of object properties during instantiation (if possible) for
|
|
153
170
|
// NodeJS optimization.
|
|
154
171
|
// Adding properties to object after instantiation will cause hidden
|
|
@@ -156,19 +173,20 @@ function doProcessDocMetadata({ docFile, versionMetadata, context, options, }) {
|
|
|
156
173
|
return {
|
|
157
174
|
unversionedId,
|
|
158
175
|
id,
|
|
159
|
-
isDocsHomePage,
|
|
160
176
|
title,
|
|
161
177
|
description,
|
|
162
|
-
source: utils_1.aliasedSitePath(filePath, siteDir),
|
|
178
|
+
source: (0, utils_1.aliasedSitePath)(filePath, siteDir),
|
|
163
179
|
sourceDirName,
|
|
164
180
|
slug: docSlug,
|
|
165
181
|
permalink,
|
|
182
|
+
draft,
|
|
166
183
|
editUrl: customEditURL !== undefined ? customEditURL : getDocEditUrl(),
|
|
184
|
+
tags: (0, utils_1.normalizeFrontMatterTags)(versionMetadata.tagsPath, frontMatter.tags),
|
|
167
185
|
version: versionMetadata.versionName,
|
|
168
186
|
lastUpdatedBy: lastUpdate.lastUpdatedBy,
|
|
169
187
|
lastUpdatedAt: lastUpdate.lastUpdatedAt,
|
|
170
188
|
formattedLastUpdatedAt: lastUpdate.lastUpdatedAt
|
|
171
|
-
?
|
|
189
|
+
? formatDate(i18n.currentLocale, new Date(lastUpdate.lastUpdatedAt * 1000), i18n.localeConfigs[i18n.currentLocale].calendar)
|
|
172
190
|
: undefined,
|
|
173
191
|
sidebarPosition,
|
|
174
192
|
frontMatter,
|
|
@@ -178,9 +196,114 @@ function processDocMetadata(args) {
|
|
|
178
196
|
try {
|
|
179
197
|
return doProcessDocMetadata(args);
|
|
180
198
|
}
|
|
181
|
-
catch (
|
|
182
|
-
|
|
183
|
-
throw
|
|
199
|
+
catch (err) {
|
|
200
|
+
logger_1.default.error `Can't process doc metadata for doc at path path=${args.docFile.filePath} in version name=${args.versionMetadata.versionName}`;
|
|
201
|
+
throw err;
|
|
184
202
|
}
|
|
185
203
|
}
|
|
186
204
|
exports.processDocMetadata = processDocMetadata;
|
|
205
|
+
function addDocNavigation(docsBase, sidebarsUtils, sidebarFilePath) {
|
|
206
|
+
const docsById = createDocsByIdIndex(docsBase);
|
|
207
|
+
sidebarsUtils.checkSidebarsDocIds(docsBase.flatMap(getDocIds), sidebarFilePath);
|
|
208
|
+
// Add sidebar/next/previous to the docs
|
|
209
|
+
function addNavData(doc) {
|
|
210
|
+
const navigation = sidebarsUtils.getDocNavigation(doc.unversionedId, doc.id, doc.frontMatter.displayed_sidebar);
|
|
211
|
+
const toNavigationLinkByDocId = (docId, type) => {
|
|
212
|
+
if (!docId) {
|
|
213
|
+
return undefined;
|
|
214
|
+
}
|
|
215
|
+
const navDoc = docsById[docId];
|
|
216
|
+
if (!navDoc) {
|
|
217
|
+
// This could only happen if user provided the ID through front matter
|
|
218
|
+
throw new Error(`Error when loading ${doc.id} in ${doc.sourceDirName}: the pagination_${type} front matter points to a non-existent ID ${docId}.`);
|
|
219
|
+
}
|
|
220
|
+
return (0, utils_2.toDocNavigationLink)(navDoc);
|
|
221
|
+
};
|
|
222
|
+
const previous = doc.frontMatter.pagination_prev !== undefined
|
|
223
|
+
? toNavigationLinkByDocId(doc.frontMatter.pagination_prev, 'prev')
|
|
224
|
+
: (0, utils_2.toNavigationLink)(navigation.previous, docsById);
|
|
225
|
+
const next = doc.frontMatter.pagination_next !== undefined
|
|
226
|
+
? toNavigationLinkByDocId(doc.frontMatter.pagination_next, 'next')
|
|
227
|
+
: (0, utils_2.toNavigationLink)(navigation.next, docsById);
|
|
228
|
+
return { ...doc, sidebar: navigation.sidebarName, previous, next };
|
|
229
|
+
}
|
|
230
|
+
const docsWithNavigation = docsBase.map(addNavData);
|
|
231
|
+
// Sort to ensure consistent output for tests
|
|
232
|
+
docsWithNavigation.sort((a, b) => a.id.localeCompare(b.id));
|
|
233
|
+
return docsWithNavigation;
|
|
234
|
+
}
|
|
235
|
+
exports.addDocNavigation = addDocNavigation;
|
|
236
|
+
/**
|
|
237
|
+
* The "main doc" is the "version entry point"
|
|
238
|
+
* We browse this doc by clicking on a version:
|
|
239
|
+
* - the "home" doc (at '/docs/')
|
|
240
|
+
* - the first doc of the first sidebar
|
|
241
|
+
* - a random doc (if no docs are in any sidebar... edge case)
|
|
242
|
+
*/
|
|
243
|
+
function getMainDocId({ docs, sidebarsUtils, }) {
|
|
244
|
+
function getMainDoc() {
|
|
245
|
+
const versionHomeDoc = docs.find((doc) => doc.slug === '/');
|
|
246
|
+
const firstDocIdOfFirstSidebar = sidebarsUtils.getFirstDocIdOfFirstSidebar();
|
|
247
|
+
if (versionHomeDoc) {
|
|
248
|
+
return versionHomeDoc;
|
|
249
|
+
}
|
|
250
|
+
else if (firstDocIdOfFirstSidebar) {
|
|
251
|
+
return docs.find((doc) => doc.id === firstDocIdOfFirstSidebar ||
|
|
252
|
+
doc.unversionedId === firstDocIdOfFirstSidebar);
|
|
253
|
+
}
|
|
254
|
+
return docs[0];
|
|
255
|
+
}
|
|
256
|
+
return getMainDoc().unversionedId;
|
|
257
|
+
}
|
|
258
|
+
exports.getMainDocId = getMainDocId;
|
|
259
|
+
// By convention, Docusaurus considers some docs are "indexes":
|
|
260
|
+
// - index.md
|
|
261
|
+
// - readme.md
|
|
262
|
+
// - <folder>/<folder>.md
|
|
263
|
+
//
|
|
264
|
+
// This function is the default implementation of this convention
|
|
265
|
+
//
|
|
266
|
+
// Those index docs produce a different behavior
|
|
267
|
+
// - Slugs do not end with a weird "/index" suffix
|
|
268
|
+
// - Auto-generated sidebar categories link to them as intro
|
|
269
|
+
const isCategoryIndex = ({ fileName, directories, }) => {
|
|
270
|
+
const eligibleDocIndexNames = [
|
|
271
|
+
'index',
|
|
272
|
+
'readme',
|
|
273
|
+
directories[0]?.toLowerCase(),
|
|
274
|
+
];
|
|
275
|
+
return eligibleDocIndexNames.includes(fileName.toLowerCase());
|
|
276
|
+
};
|
|
277
|
+
exports.isCategoryIndex = isCategoryIndex;
|
|
278
|
+
/**
|
|
279
|
+
* `guides/sidebar/autogenerated.md` ->
|
|
280
|
+
* `'autogenerated', '.md', ['sidebar', 'guides']`
|
|
281
|
+
*/
|
|
282
|
+
function toCategoryIndexMatcherParam({ source, sourceDirName, }) {
|
|
283
|
+
// source + sourceDirName are always posix-style
|
|
284
|
+
return {
|
|
285
|
+
fileName: path_1.default.posix.parse(source).name,
|
|
286
|
+
extension: path_1.default.posix.parse(source).ext,
|
|
287
|
+
directories: sourceDirName.split(path_1.default.posix.sep).reverse(),
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
exports.toCategoryIndexMatcherParam = toCategoryIndexMatcherParam;
|
|
291
|
+
// Return both doc ids
|
|
292
|
+
// TODO legacy retro-compatibility due to old versioned sidebars using
|
|
293
|
+
// versioned doc ids ("id" should be removed & "versionedId" should be renamed
|
|
294
|
+
// to "id")
|
|
295
|
+
function getDocIds(doc) {
|
|
296
|
+
return [doc.unversionedId, doc.id];
|
|
297
|
+
}
|
|
298
|
+
exports.getDocIds = getDocIds;
|
|
299
|
+
// Docs are indexed by both versioned and unversioned ids at the same time
|
|
300
|
+
// TODO legacy retro-compatibility due to old versioned sidebars using
|
|
301
|
+
// versioned doc ids ("id" should be removed & "versionedId" should be renamed
|
|
302
|
+
// to "id")
|
|
303
|
+
function createDocsByIdIndex(docs) {
|
|
304
|
+
return Object.fromEntries(docs.flatMap((doc) => [
|
|
305
|
+
[doc.unversionedId, doc],
|
|
306
|
+
[doc.id, doc],
|
|
307
|
+
]));
|
|
308
|
+
}
|
|
309
|
+
exports.createDocsByIdIndex = createDocsByIdIndex;
|
|
@@ -4,11 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
url: 'https://your-docusaurus-test-site.com',
|
|
12
|
-
baseUrl: '/',
|
|
13
|
-
favicon: 'img/favicon.ico',
|
|
14
|
-
};
|
|
7
|
+
import type { DocFrontMatter } from '@docusaurus/plugin-content-docs';
|
|
8
|
+
export declare function validateDocFrontMatter(frontMatter: {
|
|
9
|
+
[key: string]: unknown;
|
|
10
|
+
}): DocFrontMatter;
|
|
@@ -7,28 +7,47 @@
|
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.validateDocFrontMatter = void 0;
|
|
10
|
-
/* eslint-disable camelcase */
|
|
11
10
|
const utils_validation_1 = require("@docusaurus/utils-validation");
|
|
11
|
+
const FrontMatterLastUpdateErrorMessage = '{{#label}} does not look like a valid front matter FileChange object. Please use a FileChange object (with an author and/or date).';
|
|
12
12
|
// NOTE: we don't add any default value on purpose here
|
|
13
|
-
// We don't want default values to magically appear in doc
|
|
13
|
+
// We don't want default values to magically appear in doc metadata and props
|
|
14
14
|
// While the user did not provide those values explicitly
|
|
15
15
|
// We use default values in code instead
|
|
16
16
|
const DocFrontMatterSchema = utils_validation_1.JoiFrontMatter.object({
|
|
17
17
|
id: utils_validation_1.JoiFrontMatter.string(),
|
|
18
|
+
// See https://github.com/facebook/docusaurus/issues/4591#issuecomment-822372398
|
|
18
19
|
title: utils_validation_1.JoiFrontMatter.string().allow(''),
|
|
19
20
|
hide_title: utils_validation_1.JoiFrontMatter.boolean(),
|
|
20
21
|
hide_table_of_contents: utils_validation_1.JoiFrontMatter.boolean(),
|
|
21
22
|
keywords: utils_validation_1.JoiFrontMatter.array().items(utils_validation_1.JoiFrontMatter.string().required()),
|
|
22
23
|
image: utils_validation_1.URISchema,
|
|
24
|
+
// See https://github.com/facebook/docusaurus/issues/4591#issuecomment-822372398
|
|
23
25
|
description: utils_validation_1.JoiFrontMatter.string().allow(''),
|
|
24
26
|
slug: utils_validation_1.JoiFrontMatter.string(),
|
|
25
27
|
sidebar_label: utils_validation_1.JoiFrontMatter.string(),
|
|
26
28
|
sidebar_position: utils_validation_1.JoiFrontMatter.number(),
|
|
29
|
+
sidebar_class_name: utils_validation_1.JoiFrontMatter.string(),
|
|
30
|
+
sidebar_custom_props: utils_validation_1.JoiFrontMatter.object().unknown(),
|
|
31
|
+
displayed_sidebar: utils_validation_1.JoiFrontMatter.string().allow(null),
|
|
32
|
+
tags: utils_validation_1.FrontMatterTagsSchema,
|
|
27
33
|
pagination_label: utils_validation_1.JoiFrontMatter.string(),
|
|
28
34
|
custom_edit_url: utils_validation_1.URISchema.allow('', null),
|
|
29
35
|
parse_number_prefixes: utils_validation_1.JoiFrontMatter.boolean(),
|
|
36
|
+
pagination_next: utils_validation_1.JoiFrontMatter.string().allow(null),
|
|
37
|
+
pagination_prev: utils_validation_1.JoiFrontMatter.string().allow(null),
|
|
38
|
+
draft: utils_validation_1.JoiFrontMatter.boolean(),
|
|
39
|
+
...utils_validation_1.FrontMatterTOCHeadingLevels,
|
|
40
|
+
last_update: utils_validation_1.JoiFrontMatter.object({
|
|
41
|
+
author: utils_validation_1.JoiFrontMatter.string(),
|
|
42
|
+
date: utils_validation_1.JoiFrontMatter.date().raw(),
|
|
43
|
+
})
|
|
44
|
+
.or('author', 'date')
|
|
45
|
+
.messages({
|
|
46
|
+
'object.missing': FrontMatterLastUpdateErrorMessage,
|
|
47
|
+
'object.base': FrontMatterLastUpdateErrorMessage,
|
|
48
|
+
}),
|
|
30
49
|
}).unknown();
|
|
31
50
|
function validateDocFrontMatter(frontMatter) {
|
|
32
|
-
return utils_validation_1.validateFrontMatter(frontMatter, DocFrontMatterSchema);
|
|
51
|
+
return (0, utils_validation_1.validateFrontMatter)(frontMatter, DocFrontMatterSchema);
|
|
33
52
|
}
|
|
34
53
|
exports.validateDocFrontMatter = validateDocFrontMatter;
|
package/lib/globalData.d.ts
CHANGED
|
@@ -4,6 +4,6 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
export declare function toGlobalDataVersion(version:
|
|
7
|
+
import type { FullVersion } from './types';
|
|
8
|
+
import type { GlobalVersion } from '@docusaurus/plugin-content-docs/client';
|
|
9
|
+
export declare function toGlobalDataVersion(version: FullVersion): GlobalVersion;
|
package/lib/globalData.js
CHANGED
|
@@ -6,7 +6,10 @@
|
|
|
6
6
|
* LICENSE file in the root directory of this source tree.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.toGlobalDataVersion =
|
|
9
|
+
exports.toGlobalDataVersion = void 0;
|
|
10
|
+
const tslib_1 = require("tslib");
|
|
11
|
+
const lodash_1 = tslib_1.__importDefault(require("lodash"));
|
|
12
|
+
const docs_1 = require("./docs");
|
|
10
13
|
function toGlobalDataDoc(doc) {
|
|
11
14
|
return {
|
|
12
15
|
id: doc.unversionedId,
|
|
@@ -14,15 +17,41 @@ function toGlobalDataDoc(doc) {
|
|
|
14
17
|
sidebar: doc.sidebar,
|
|
15
18
|
};
|
|
16
19
|
}
|
|
17
|
-
|
|
20
|
+
function toGlobalDataGeneratedIndex(doc) {
|
|
21
|
+
return {
|
|
22
|
+
id: doc.slug,
|
|
23
|
+
path: doc.permalink,
|
|
24
|
+
sidebar: doc.sidebar,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function toGlobalSidebars(sidebars, version) {
|
|
28
|
+
return lodash_1.default.mapValues(sidebars, (sidebar, sidebarId) => {
|
|
29
|
+
const firstLink = version.sidebarsUtils.getFirstLink(sidebarId);
|
|
30
|
+
if (!firstLink) {
|
|
31
|
+
return {};
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
link: {
|
|
35
|
+
path: firstLink.type === 'generated-index'
|
|
36
|
+
? firstLink.permalink
|
|
37
|
+
: version.docs.find((doc) => doc.id === firstLink.id || doc.unversionedId === firstLink.id).permalink,
|
|
38
|
+
label: firstLink.label,
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
});
|
|
42
|
+
}
|
|
18
43
|
function toGlobalDataVersion(version) {
|
|
19
44
|
return {
|
|
20
45
|
name: version.versionName,
|
|
21
|
-
label: version.
|
|
46
|
+
label: version.label,
|
|
22
47
|
isLast: version.isLast,
|
|
23
|
-
path: version.
|
|
24
|
-
mainDocId: version
|
|
25
|
-
docs: version.docs
|
|
48
|
+
path: version.path,
|
|
49
|
+
mainDocId: (0, docs_1.getMainDocId)(version),
|
|
50
|
+
docs: version.docs
|
|
51
|
+
.map(toGlobalDataDoc)
|
|
52
|
+
.concat(version.categoryGeneratedIndices.map(toGlobalDataGeneratedIndex)),
|
|
53
|
+
draftIds: version.drafts.map((doc) => doc.unversionedId),
|
|
54
|
+
sidebars: toGlobalSidebars(version.sidebars, version),
|
|
26
55
|
};
|
|
27
56
|
}
|
|
28
57
|
exports.toGlobalDataVersion = toGlobalDataVersion;
|
package/lib/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This source code is licensed under the MIT license found in the
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
export default function pluginContentDocs(context: LoadContext, options: PluginOptions): Plugin<LoadedContent
|
|
7
|
+
import type { PluginOptions, LoadedContent } from '@docusaurus/plugin-content-docs';
|
|
8
|
+
import type { LoadContext, Plugin } from '@docusaurus/types';
|
|
9
|
+
export default function pluginContentDocs(context: LoadContext, options: PluginOptions): Promise<Plugin<LoadedContent>>;
|
|
10
10
|
export { validateOptions } from './options';
|