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