@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.
Files changed (236) hide show
  1. package/lib/categoryGeneratedIndex.d.ts +12 -0
  2. package/lib/categoryGeneratedIndex.js +37 -0
  3. package/lib/cli.d.ts +3 -2
  4. package/lib/cli.js +57 -73
  5. package/lib/client/docsClientUtils.d.ts +9 -28
  6. package/lib/client/docsClientUtils.js +34 -43
  7. package/lib/client/index.d.ts +81 -0
  8. package/lib/client/index.js +67 -0
  9. package/lib/constants.d.ts +4 -0
  10. package/lib/constants.js +4 -1
  11. package/lib/docs.d.ts +33 -6
  12. package/lib/docs.js +201 -78
  13. package/{src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docusaurus.config.js → lib/frontMatter.d.ts} +4 -8
  14. package/lib/{docFrontMatter.js → frontMatter.js} +22 -3
  15. package/lib/globalData.d.ts +3 -3
  16. package/lib/globalData.js +35 -6
  17. package/lib/index.d.ts +3 -3
  18. package/lib/index.js +120 -153
  19. package/lib/lastUpdate.d.ts +4 -6
  20. package/lib/lastUpdate.js +22 -26
  21. package/lib/markdown/index.d.ts +3 -6
  22. package/lib/markdown/index.js +3 -3
  23. package/lib/markdown/linkify.d.ts +1 -1
  24. package/lib/markdown/linkify.js +6 -3
  25. package/lib/numberPrefix.d.ts +1 -1
  26. package/lib/numberPrefix.js +16 -21
  27. package/lib/options.d.ts +3 -5
  28. package/lib/options.js +34 -26
  29. package/lib/props.d.ts +7 -2
  30. package/lib/props.js +84 -13
  31. package/lib/routes.d.ts +29 -0
  32. package/lib/routes.js +96 -0
  33. package/lib/server-export.d.ts +9 -0
  34. package/lib/server-export.js +25 -0
  35. package/lib/{sidebarItemsGenerator.d.ts → sidebars/generator.d.ts} +1 -7
  36. package/lib/sidebars/generator.js +209 -0
  37. package/lib/sidebars/index.d.ts +13 -0
  38. package/lib/sidebars/index.js +92 -0
  39. package/lib/sidebars/normalization.d.ts +13 -0
  40. package/lib/sidebars/normalization.js +59 -0
  41. package/lib/sidebars/postProcessor.d.ts +11 -0
  42. package/lib/sidebars/postProcessor.js +81 -0
  43. package/lib/sidebars/processor.d.ts +10 -0
  44. package/lib/sidebars/processor.js +79 -0
  45. package/lib/sidebars/types.d.ts +183 -0
  46. package/lib/{docFrontMatter.d.ts → sidebars/types.js} +2 -2
  47. package/lib/sidebars/utils.d.ts +55 -0
  48. package/lib/sidebars/utils.js +259 -0
  49. package/lib/sidebars/validation.d.ts +11 -0
  50. package/lib/sidebars/validation.js +143 -0
  51. package/lib/slug.d.ts +5 -4
  52. package/lib/slug.js +28 -18
  53. package/{src/__tests__/__fixtures__/sidebars/sidebars-first-level-not-category.js → lib/tags.d.ts} +3 -14
  54. package/lib/tags.js +21 -0
  55. package/lib/translations.d.ts +3 -3
  56. package/lib/translations.js +100 -93
  57. package/lib/types.d.ts +13 -192
  58. package/lib/versions/files.d.ts +50 -0
  59. package/lib/versions/files.js +141 -0
  60. package/lib/versions/index.d.ts +36 -0
  61. package/lib/versions/index.js +154 -0
  62. package/lib/versions/validation.d.ts +17 -0
  63. package/lib/versions/validation.js +71 -0
  64. package/package.json +44 -30
  65. package/src/categoryGeneratedIndex.ts +60 -0
  66. package/src/cli.ts +88 -118
  67. package/src/client/docsClientUtils.ts +44 -71
  68. package/src/client/index.ts +158 -0
  69. package/src/constants.ts +4 -2
  70. package/src/docs.ts +277 -80
  71. package/src/frontMatter.ts +63 -0
  72. package/src/globalData.ts +57 -7
  73. package/src/index.ts +174 -221
  74. package/src/lastUpdate.ts +27 -38
  75. package/src/markdown/index.ts +10 -16
  76. package/src/markdown/linkify.ts +7 -4
  77. package/src/numberPrefix.ts +19 -26
  78. package/src/options.ts +38 -38
  79. package/src/plugin-content-docs.d.ts +570 -91
  80. package/src/props.ts +121 -20
  81. package/src/routes.ts +159 -0
  82. package/src/server-export.ts +26 -0
  83. package/src/sidebars/README.md +10 -0
  84. package/src/sidebars/generator.ts +292 -0
  85. package/src/sidebars/index.ts +118 -0
  86. package/src/sidebars/normalization.ts +91 -0
  87. package/src/sidebars/postProcessor.ts +112 -0
  88. package/src/sidebars/processor.ts +123 -0
  89. package/src/sidebars/types.ts +280 -0
  90. package/src/sidebars/utils.ts +393 -0
  91. package/src/sidebars/validation.ts +179 -0
  92. package/src/slug.ts +41 -22
  93. package/src/tags.ts +20 -0
  94. package/src/translations.ts +155 -124
  95. package/src/types.ts +17 -259
  96. package/src/versions/files.ts +216 -0
  97. package/src/versions/index.ts +246 -0
  98. package/src/versions/validation.ts +115 -0
  99. package/lib/.tsbuildinfo +0 -1
  100. package/lib/sidebarItemsGenerator.js +0 -215
  101. package/lib/sidebars.d.ts +0 -45
  102. package/lib/sidebars.js +0 -354
  103. package/lib/theme/hooks/useDocs.d.ts +0 -20
  104. package/lib/theme/hooks/useDocs.js +0 -75
  105. package/lib/versions.d.ts +0 -16
  106. package/lib/versions.js +0 -319
  107. package/src/__tests__/__fixtures__/bad-id-site/docs/invalid-id.md +0 -5
  108. package/src/__tests__/__fixtures__/bad-slug-on-doc-home-site/docs/docWithSlug.md +0 -5
  109. package/src/__tests__/__fixtures__/empty-site/docusaurus.config.js +0 -16
  110. package/src/__tests__/__fixtures__/empty-site/sidebars.json +0 -1
  111. package/src/__tests__/__fixtures__/sidebars/sidebars-category-shorthand.js +0 -34
  112. package/src/__tests__/__fixtures__/sidebars/sidebars-category-wrong-items.json +0 -11
  113. package/src/__tests__/__fixtures__/sidebars/sidebars-category-wrong-label.json +0 -11
  114. package/src/__tests__/__fixtures__/sidebars/sidebars-category.js +0 -44
  115. package/src/__tests__/__fixtures__/sidebars/sidebars-collapsed-first-level.json +0 -20
  116. package/src/__tests__/__fixtures__/sidebars/sidebars-collapsed.json +0 -21
  117. package/src/__tests__/__fixtures__/sidebars/sidebars-doc-id-not-string.json +0 -10
  118. package/src/__tests__/__fixtures__/sidebars/sidebars-link-wrong-href.json +0 -11
  119. package/src/__tests__/__fixtures__/sidebars/sidebars-link-wrong-label.json +0 -11
  120. package/src/__tests__/__fixtures__/sidebars/sidebars-link.json +0 -11
  121. package/src/__tests__/__fixtures__/sidebars/sidebars-unknown-type.json +0 -14
  122. package/src/__tests__/__fixtures__/sidebars/sidebars-wrong-field.json +0 -20
  123. package/src/__tests__/__fixtures__/sidebars/sidebars.json +0 -20
  124. package/src/__tests__/__fixtures__/simple-site/docs/_partials/somePartial.md +0 -3
  125. package/src/__tests__/__fixtures__/simple-site/docs/_partials/subfolder/somePartial.md +0 -3
  126. package/src/__tests__/__fixtures__/simple-site/docs/_somePartial.md +0 -3
  127. package/src/__tests__/__fixtures__/simple-site/docs/foo/bar.md +0 -69
  128. package/src/__tests__/__fixtures__/simple-site/docs/foo/baz.md +0 -70
  129. package/src/__tests__/__fixtures__/simple-site/docs/headingAsTitle.md +0 -1
  130. package/src/__tests__/__fixtures__/simple-site/docs/hello.md +0 -53
  131. package/src/__tests__/__fixtures__/simple-site/docs/ipsum.md +0 -5
  132. package/src/__tests__/__fixtures__/simple-site/docs/lorem.md +0 -6
  133. package/src/__tests__/__fixtures__/simple-site/docs/rootAbsoluteSlug.md +0 -5
  134. package/src/__tests__/__fixtures__/simple-site/docs/rootRelativeSlug.md +0 -5
  135. package/src/__tests__/__fixtures__/simple-site/docs/rootResolvedSlug.md +0 -5
  136. package/src/__tests__/__fixtures__/simple-site/docs/rootTryToEscapeSlug.md +0 -5
  137. package/src/__tests__/__fixtures__/simple-site/docs/slugs/absoluteSlug.md +0 -5
  138. package/src/__tests__/__fixtures__/simple-site/docs/slugs/relativeSlug.md +0 -5
  139. package/src/__tests__/__fixtures__/simple-site/docs/slugs/resolvedSlug.md +0 -5
  140. package/src/__tests__/__fixtures__/simple-site/docs/slugs/tryToEscapeSlug.md +0 -5
  141. package/src/__tests__/__fixtures__/simple-site/docusaurus.config.js +0 -14
  142. package/src/__tests__/__fixtures__/simple-site/sidebars.json +0 -23
  143. package/src/__tests__/__fixtures__/simple-site/wrong-sidebars.json +0 -7
  144. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/0-getting-started.md +0 -3
  145. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/1-installation.md +0 -3
  146. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/00_api-overview.md +0 -3
  147. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/01_Core APIs/0 --- Client API.md +0 -1
  148. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/01_Core APIs/1 --- Server API.md +0 -1
  149. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/02_Extension APIs/0. Plugin API.md +0 -1
  150. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/02_Extension APIs/1. Theme API.md +0 -1
  151. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/02_Extension APIs/_category_.yml +0 -1
  152. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/03_api-end.md +0 -3
  153. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/_category_.json +0 -3
  154. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/0-guide2.5.md +0 -8
  155. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/02-guide2.md +0 -7
  156. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/_category_.json +0 -3
  157. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/a-guide4.md +0 -7
  158. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/b-guide5.md +0 -7
  159. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/guide3.md +0 -8
  160. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/z-guide1.md +0 -8
  161. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/partialAutogeneratedSidebars.js +0 -23
  162. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/partialAutogeneratedSidebars2.js +0 -16
  163. package/src/__tests__/__fixtures__/site-with-doc-label/docs/hello-1.md +0 -7
  164. package/src/__tests__/__fixtures__/site-with-doc-label/docs/hello-2.md +0 -8
  165. package/src/__tests__/__fixtures__/site-with-doc-label/docusaurus.config.js +0 -14
  166. package/src/__tests__/__fixtures__/site-with-doc-label/sidebars.json +0 -14
  167. package/src/__tests__/__fixtures__/versioned-site/community/team.md +0 -1
  168. package/src/__tests__/__fixtures__/versioned-site/community_sidebars.json +0 -3
  169. package/src/__tests__/__fixtures__/versioned-site/community_versioned_docs/version-1.0.0/team.md +0 -1
  170. package/src/__tests__/__fixtures__/versioned-site/community_versioned_sidebars/version-1.0.0-sidebars.json +0 -3
  171. package/src/__tests__/__fixtures__/versioned-site/community_versions.json +0 -1
  172. package/src/__tests__/__fixtures__/versioned-site/docs/foo/bar.md +0 -4
  173. package/src/__tests__/__fixtures__/versioned-site/docs/hello.md +0 -1
  174. package/src/__tests__/__fixtures__/versioned-site/docs/slugs/absoluteSlug.md +0 -5
  175. package/src/__tests__/__fixtures__/versioned-site/docs/slugs/relativeSlug.md +0 -5
  176. package/src/__tests__/__fixtures__/versioned-site/docs/slugs/resolvedSlug.md +0 -5
  177. package/src/__tests__/__fixtures__/versioned-site/docs/slugs/tryToEscapeSlug.md +0 -5
  178. package/src/__tests__/__fixtures__/versioned-site/docusaurus.config.js +0 -18
  179. package/src/__tests__/__fixtures__/versioned-site/i18n/en/docusaurus-plugin-content-docs/version-1.0.0/hello.md +0 -1
  180. package/src/__tests__/__fixtures__/versioned-site/i18n/en/docusaurus-plugin-content-docs-community/current/team.md +0 -5
  181. package/src/__tests__/__fixtures__/versioned-site/i18n/fr/docusaurus-plugin-content-docs/version-1.0.0/hello.md +0 -1
  182. package/src/__tests__/__fixtures__/versioned-site/sidebars.json +0 -10
  183. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.0/foo/bar.md +0 -4
  184. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.0/foo/baz.md +0 -1
  185. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.0/hello.md +0 -1
  186. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.1/_partials/somePartial.md +0 -3
  187. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.1/_partials/subfolder/somePartial.md +0 -3
  188. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.1/_somePartial.md +0 -3
  189. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.1/foo/bar.md +0 -1
  190. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.1/hello.md +0 -1
  191. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/rootAbsoluteSlug.md +0 -5
  192. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/rootRelativeSlug.md +0 -5
  193. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/rootResolvedSlug.md +0 -5
  194. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/rootTryToEscapeSlug.md +0 -5
  195. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/slugs/absoluteSlug.md +0 -5
  196. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/slugs/relativeSlug.md +0 -5
  197. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/slugs/resolvedSlug.md +0 -5
  198. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/slugs/tryToEscapeSlug.md +0 -5
  199. package/src/__tests__/__fixtures__/versioned-site/versioned_sidebars/version-1.0.0-sidebars.json +0 -11
  200. package/src/__tests__/__fixtures__/versioned-site/versioned_sidebars/version-1.0.1-sidebars.json +0 -10
  201. package/src/__tests__/__fixtures__/versioned-site/versioned_sidebars/version-withSlugs-sidebars.json +0 -5
  202. package/src/__tests__/__fixtures__/versioned-site/versions.json +0 -5
  203. package/src/__tests__/__snapshots__/cli.test.ts.snap +0 -95
  204. package/src/__tests__/__snapshots__/index.test.ts.snap +0 -1926
  205. package/src/__tests__/__snapshots__/sidebars.test.ts.snap +0 -233
  206. package/src/__tests__/__snapshots__/translations.test.ts.snap +0 -484
  207. package/src/__tests__/cli.test.ts +0 -337
  208. package/src/__tests__/docFrontMatter.test.ts +0 -244
  209. package/src/__tests__/docs.test.ts +0 -878
  210. package/src/__tests__/index.test.ts +0 -1885
  211. package/src/__tests__/lastUpdate.test.ts +0 -69
  212. package/src/__tests__/numberPrefix.test.ts +0 -199
  213. package/src/__tests__/options.test.ts +0 -272
  214. package/src/__tests__/sidebarItemsGenerator.test.ts +0 -358
  215. package/src/__tests__/sidebars.test.ts +0 -746
  216. package/src/__tests__/slug.test.ts +0 -109
  217. package/src/__tests__/translations.test.ts +0 -158
  218. package/src/__tests__/versions.test.ts +0 -741
  219. package/src/client/__tests__/docsClientUtils.test.ts +0 -371
  220. package/src/docFrontMatter.ts +0 -41
  221. package/src/markdown/__tests__/__fixtures__/docs/doc-localized.md +0 -1
  222. package/src/markdown/__tests__/__fixtures__/docs/doc1.md +0 -13
  223. package/src/markdown/__tests__/__fixtures__/docs/doc2.md +0 -12
  224. package/src/markdown/__tests__/__fixtures__/docs/doc4.md +0 -19
  225. package/src/markdown/__tests__/__fixtures__/docs/doc5.md +0 -6
  226. package/src/markdown/__tests__/__fixtures__/docs/subdir/doc3.md +0 -3
  227. package/src/markdown/__tests__/__fixtures__/versioned_docs/version-1.0.0/doc2.md +0 -7
  228. package/src/markdown/__tests__/__fixtures__/versioned_docs/version-1.0.0/subdir/doc1.md +0 -3
  229. package/src/markdown/__tests__/__snapshots__/linkify.test.ts.snap +0 -82
  230. package/src/markdown/__tests__/linkify.test.ts +0 -190
  231. package/src/sidebarItemsGenerator.ts +0 -315
  232. package/src/sidebars.ts +0 -589
  233. package/src/theme/hooks/useDocs.ts +0 -103
  234. package/src/versions.ts +0 -572
  235. package/tsconfig.json +0 -9
  236. package/types.d.ts +0 -13
@@ -1,358 +0,0 @@
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 {
9
- CategoryMetadatasFile,
10
- DefaultSidebarItemsGenerator,
11
- } from '../sidebarItemsGenerator';
12
- import {Sidebar, SidebarItemsGenerator} from '../types';
13
- import fs from 'fs-extra';
14
- import {DefaultNumberPrefixParser} from '../numberPrefix';
15
-
16
- describe('DefaultSidebarItemsGenerator', () => {
17
- function testDefaultSidebarItemsGenerator(
18
- params: Partial<Parameters<SidebarItemsGenerator>[0]>,
19
- ) {
20
- return DefaultSidebarItemsGenerator({
21
- numberPrefixParser: DefaultNumberPrefixParser,
22
- item: {
23
- type: 'autogenerated',
24
- dirName: '.',
25
- },
26
- version: {
27
- versionName: 'current',
28
- contentPath: 'docs',
29
- },
30
- docs: [],
31
- options: {
32
- sidebarCollapsed: true,
33
- sidebarCollapsible: true,
34
- },
35
- ...params,
36
- });
37
- }
38
-
39
- function mockCategoryMetadataFiles(
40
- categoryMetadataFiles: Record<string, Partial<CategoryMetadatasFile>>,
41
- ) {
42
- jest.spyOn(fs, 'pathExists').mockImplementation((metadataFilePath) => {
43
- return typeof categoryMetadataFiles[metadataFilePath] !== 'undefined';
44
- });
45
- jest.spyOn(fs, 'readFile').mockImplementation(
46
- // @ts-expect-error: annoying TS error due to overrides
47
- async (metadataFilePath: string) => {
48
- return JSON.stringify(categoryMetadataFiles[metadataFilePath]);
49
- },
50
- );
51
- }
52
-
53
- test('generates empty sidebar slice when no docs and emit a warning', async () => {
54
- const consoleWarn = jest.spyOn(console, 'warn');
55
- const sidebarSlice = await testDefaultSidebarItemsGenerator({
56
- docs: [],
57
- });
58
- expect(sidebarSlice).toEqual([]);
59
- expect(consoleWarn).toHaveBeenCalledWith(
60
- expect.stringMatching(
61
- /No docs found in dir .: can't auto-generate a sidebar/,
62
- ),
63
- );
64
- });
65
-
66
- test('generates simple flat sidebar', async () => {
67
- const sidebarSlice = await DefaultSidebarItemsGenerator({
68
- numberPrefixParser: DefaultNumberPrefixParser,
69
- item: {
70
- type: 'autogenerated',
71
- dirName: '.',
72
- },
73
- version: {
74
- versionName: 'current',
75
- contentPath: '',
76
- },
77
- docs: [
78
- {
79
- id: 'doc1',
80
- source: 'doc1.md',
81
- sourceDirName: '.',
82
- sidebarPosition: 2,
83
- frontMatter: {
84
- sidebar_label: 'doc1 sidebar label',
85
- },
86
- },
87
- {
88
- id: 'doc2',
89
- source: 'doc2.md',
90
- sourceDirName: '.',
91
- sidebarPosition: 3,
92
- frontMatter: {},
93
- },
94
- {
95
- id: 'doc3',
96
- source: 'doc3.md',
97
- sourceDirName: '.',
98
- sidebarPosition: 1,
99
- frontMatter: {},
100
- },
101
- {
102
- id: 'doc4',
103
- source: 'doc4.md',
104
- sourceDirName: '.',
105
- sidebarPosition: 1.5,
106
- frontMatter: {},
107
- },
108
- {
109
- id: 'doc5',
110
- source: 'doc5.md',
111
- sourceDirName: '.',
112
- sidebarPosition: undefined,
113
- frontMatter: {},
114
- },
115
- ],
116
- options: {
117
- sidebarCollapsed: true,
118
- sidebarCollapsible: true,
119
- },
120
- });
121
-
122
- expect(sidebarSlice).toEqual([
123
- {type: 'doc', id: 'doc3'},
124
- {type: 'doc', id: 'doc4'},
125
- {type: 'doc', id: 'doc1', label: 'doc1 sidebar label'},
126
- {type: 'doc', id: 'doc2'},
127
- {type: 'doc', id: 'doc5'},
128
- ] as Sidebar);
129
- });
130
-
131
- test('generates complex nested sidebar', async () => {
132
- mockCategoryMetadataFiles({
133
- '02-Guides/_category_.json': {collapsed: false},
134
- '02-Guides/01-SubGuides/_category_.yml': {
135
- label: 'SubGuides (metadata file label)',
136
- },
137
- });
138
-
139
- const sidebarSlice = await DefaultSidebarItemsGenerator({
140
- numberPrefixParser: DefaultNumberPrefixParser,
141
- item: {
142
- type: 'autogenerated',
143
- dirName: '.',
144
- },
145
- version: {
146
- versionName: 'current',
147
- contentPath: '',
148
- },
149
- docs: [
150
- {
151
- id: 'intro',
152
- source: 'intro.md',
153
- sourceDirName: '.',
154
- sidebarPosition: 1,
155
- frontMatter: {},
156
- },
157
- {
158
- id: 'tutorial2',
159
- source: 'tutorial2.md',
160
- sourceDirName: '01-Tutorials',
161
- sidebarPosition: 2,
162
- frontMatter: {},
163
- },
164
- {
165
- id: 'tutorial1',
166
- source: 'tutorial1.md',
167
- sourceDirName: '01-Tutorials',
168
- sidebarPosition: 1,
169
- frontMatter: {},
170
- },
171
- {
172
- id: 'guide2',
173
- source: 'guide2.md',
174
- sourceDirName: '02-Guides',
175
- sidebarPosition: 2,
176
- frontMatter: {},
177
- },
178
- {
179
- id: 'guide1',
180
- source: 'guide1.md',
181
- sourceDirName: '02-Guides',
182
- sidebarPosition: 1,
183
- frontMatter: {},
184
- },
185
- {
186
- id: 'nested-guide',
187
- source: 'nested-guide.md',
188
- sourceDirName: '02-Guides/01-SubGuides',
189
- sidebarPosition: undefined,
190
- frontMatter: {},
191
- },
192
- {
193
- id: 'end',
194
- source: 'end.md',
195
- sourceDirName: '.',
196
- sidebarPosition: 3,
197
- frontMatter: {},
198
- },
199
- ],
200
- options: {
201
- sidebarCollapsed: true,
202
- sidebarCollapsible: true,
203
- },
204
- });
205
-
206
- expect(sidebarSlice).toEqual([
207
- {type: 'doc', id: 'intro'},
208
- {
209
- type: 'category',
210
- label: 'Tutorials',
211
- collapsed: true,
212
- collapsible: true,
213
- items: [
214
- {type: 'doc', id: 'tutorial1'},
215
- {type: 'doc', id: 'tutorial2'},
216
- ],
217
- },
218
- {
219
- type: 'category',
220
- label: 'Guides',
221
- collapsed: false,
222
- collapsible: true,
223
- items: [
224
- {type: 'doc', id: 'guide1'},
225
- {
226
- type: 'category',
227
- label: 'SubGuides (metadata file label)',
228
- collapsed: true,
229
- collapsible: true,
230
- items: [{type: 'doc', id: 'nested-guide'}],
231
- },
232
- {type: 'doc', id: 'guide2'},
233
- ],
234
- },
235
- {type: 'doc', id: 'end'},
236
- ] as Sidebar);
237
- });
238
-
239
- test('generates subfolder sidebar', async () => {
240
- // Ensure that category metadata file is correctly read
241
- // fix edge case found in https://github.com/facebook/docusaurus/issues/4638
242
- mockCategoryMetadataFiles({
243
- 'subfolder/subsubfolder/subsubsubfolder2/_category_.yml': {
244
- position: 2,
245
- label: 'subsubsubfolder2 (_category_.yml label)',
246
- },
247
- 'subfolder/subsubfolder/subsubsubfolder3/_category_.json': {
248
- position: 1,
249
- label: 'subsubsubfolder3 (_category_.json label)',
250
- collapsible: false,
251
- collapsed: false,
252
- },
253
- });
254
-
255
- const sidebarSlice = await DefaultSidebarItemsGenerator({
256
- numberPrefixParser: DefaultNumberPrefixParser,
257
- item: {
258
- type: 'autogenerated',
259
- dirName: 'subfolder/subsubfolder',
260
- },
261
- version: {
262
- versionName: 'current',
263
- contentPath: '',
264
- },
265
- docs: [
266
- {
267
- id: 'doc1',
268
- source: 'doc1.md',
269
- sourceDirName: 'subfolder/subsubfolder',
270
- sidebarPosition: undefined,
271
- frontMatter: {},
272
- },
273
- {
274
- id: 'doc2',
275
- source: 'doc2.md',
276
- sourceDirName: 'subfolder',
277
- sidebarPosition: undefined,
278
- frontMatter: {},
279
- },
280
- {
281
- id: 'doc3',
282
- source: 'doc3.md',
283
- sourceDirName: '.',
284
- sidebarPosition: undefined,
285
- frontMatter: {},
286
- },
287
- {
288
- id: 'doc4',
289
- source: 'doc4.md',
290
- sourceDirName: 'subfolder/subsubfolder',
291
- sidebarPosition: undefined,
292
- frontMatter: {},
293
- },
294
- {
295
- id: 'doc5',
296
- source: 'doc5.md',
297
- sourceDirName: 'subfolder/subsubfolder/subsubsubfolder',
298
- sidebarPosition: undefined,
299
- frontMatter: {},
300
- },
301
- {
302
- id: 'doc6',
303
- source: 'doc6.md',
304
- sourceDirName: 'subfolder/subsubfolder/subsubsubfolder2',
305
- sidebarPosition: undefined,
306
- frontMatter: {},
307
- },
308
- {
309
- id: 'doc7',
310
- source: 'doc7.md',
311
- sourceDirName: 'subfolder/subsubfolder/subsubsubfolder3',
312
- sidebarPosition: 2,
313
- frontMatter: {},
314
- },
315
- {
316
- id: 'doc8',
317
- source: 'doc8.md',
318
- sourceDirName: 'subfolder/subsubfolder/subsubsubfolder3',
319
- sidebarPosition: 1,
320
- frontMatter: {},
321
- },
322
- ],
323
- options: {
324
- sidebarCollapsed: true,
325
- sidebarCollapsible: true,
326
- },
327
- });
328
-
329
- expect(sidebarSlice).toEqual([
330
- {
331
- type: 'category',
332
- label: 'subsubsubfolder3 (_category_.json label)',
333
- collapsed: false,
334
- collapsible: false,
335
- items: [
336
- {type: 'doc', id: 'doc8'},
337
- {type: 'doc', id: 'doc7'},
338
- ],
339
- },
340
- {
341
- type: 'category',
342
- label: 'subsubsubfolder2 (_category_.yml label)',
343
- collapsed: true,
344
- collapsible: true,
345
- items: [{type: 'doc', id: 'doc6'}],
346
- },
347
- {type: 'doc', id: 'doc1'},
348
- {type: 'doc', id: 'doc4'},
349
- {
350
- type: 'category',
351
- label: 'subsubsubfolder',
352
- collapsed: true,
353
- collapsible: true,
354
- items: [{type: 'doc', id: 'doc5'}],
355
- },
356
- ] as Sidebar);
357
- });
358
- });