@docusaurus/plugin-content-docs 2.0.0-beta.13 → 2.0.0-beta.15

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 (197) hide show
  1. package/lib/categoryGeneratedIndex.d.ts +2 -2
  2. package/lib/categoryGeneratedIndex.js +2 -0
  3. package/lib/cli.d.ts +1 -1
  4. package/lib/cli.js +2 -1
  5. package/lib/client/docsClientUtils.d.ts +3 -22
  6. package/lib/client/docsClientUtils.js +5 -1
  7. package/lib/{theme/hooks/useDocs.d.ts → client/globalDataHooks.d.ts} +1 -2
  8. package/lib/{theme/hooks/useDocs.js → client/globalDataHooks.js} +2 -1
  9. package/{src/__tests__/__fixtures__/simple-site/docusaurus.config.js → lib/client/index.d.ts} +1 -8
  10. package/{src/__tests__/__fixtures__/site-with-doc-label/docusaurus.config.js → lib/client/index.js} +4 -8
  11. package/lib/docFrontMatter.js +1 -0
  12. package/lib/docs.d.ts +19 -6
  13. package/lib/docs.js +43 -22
  14. package/lib/globalData.d.ts +5 -1
  15. package/lib/globalData.js +34 -2
  16. package/lib/index.d.ts +3 -2
  17. package/lib/index.js +4 -10
  18. package/lib/lastUpdate.js +6 -5
  19. package/lib/markdown/index.d.ts +1 -1
  20. package/lib/markdown/linkify.d.ts +1 -1
  21. package/lib/numberPrefix.d.ts +1 -1
  22. package/lib/options.d.ts +1 -1
  23. package/lib/options.js +2 -2
  24. package/lib/routes.d.ts +4 -3
  25. package/lib/routes.js +8 -5
  26. package/lib/sidebars/generator.js +15 -17
  27. package/lib/sidebars/index.d.ts +3 -2
  28. package/lib/sidebars/processor.d.ts +3 -2
  29. package/lib/sidebars/processor.js +2 -0
  30. package/lib/sidebars/types.d.ts +8 -3
  31. package/lib/sidebars/utils.d.ts +12 -4
  32. package/lib/sidebars/utils.js +48 -3
  33. package/lib/sidebars/validation.d.ts +1 -1
  34. package/lib/sidebars/validation.js +4 -0
  35. package/lib/slug.d.ts +5 -4
  36. package/lib/slug.js +8 -7
  37. package/lib/translations.js +1 -1
  38. package/lib/types.d.ts +7 -78
  39. package/lib/versions.d.ts +3 -2
  40. package/lib/versions.js +27 -32
  41. package/package.json +14 -12
  42. package/src/categoryGeneratedIndex.ts +5 -3
  43. package/src/cli.ts +6 -2
  44. package/src/client/docsClientUtils.ts +22 -35
  45. package/src/{theme/hooks/useDocs.ts → client/globalDataHooks.ts} +6 -2
  46. package/src/{__tests__/__fixtures__/site-with-autogenerated-sidebar/partialAutogeneratedSidebars2.js → client/index.ts} +1 -9
  47. package/src/docFrontMatter.ts +2 -1
  48. package/src/docs.ts +77 -42
  49. package/src/globalData.ts +49 -3
  50. package/src/index.ts +11 -21
  51. package/src/lastUpdate.ts +6 -5
  52. package/src/markdown/index.ts +1 -1
  53. package/src/markdown/linkify.ts +1 -1
  54. package/src/numberPrefix.ts +1 -1
  55. package/src/options.ts +3 -7
  56. package/src/plugin-content-docs.d.ts +128 -18
  57. package/src/routes.ts +21 -11
  58. package/src/sidebars/generator.ts +28 -31
  59. package/src/sidebars/index.ts +3 -2
  60. package/src/sidebars/normalization.ts +2 -1
  61. package/src/sidebars/processor.ts +8 -7
  62. package/src/sidebars/types.ts +9 -5
  63. package/src/sidebars/utils.ts +76 -8
  64. package/src/sidebars/validation.ts +6 -1
  65. package/src/slug.ts +15 -11
  66. package/src/translations.ts +2 -2
  67. package/src/types.ts +12 -98
  68. package/src/versions.ts +51 -47
  69. package/lib/.tsbuildinfo +0 -1
  70. package/src/__tests__/__fixtures__/bad-id-site/docs/invalid-id.md +0 -5
  71. package/src/__tests__/__fixtures__/bad-slug-on-doc-home-site/docs/docWithSlug.md +0 -5
  72. package/src/__tests__/__fixtures__/empty-site/docusaurus.config.js +0 -16
  73. package/src/__tests__/__fixtures__/empty-site/sidebars.json +0 -1
  74. package/src/__tests__/__fixtures__/simple-site/docs/_partials/somePartial.md +0 -3
  75. package/src/__tests__/__fixtures__/simple-site/docs/_partials/subfolder/somePartial.md +0 -3
  76. package/src/__tests__/__fixtures__/simple-site/docs/_somePartial.md +0 -3
  77. package/src/__tests__/__fixtures__/simple-site/docs/foo/bar.md +0 -69
  78. package/src/__tests__/__fixtures__/simple-site/docs/foo/baz.md +0 -75
  79. package/src/__tests__/__fixtures__/simple-site/docs/headingAsTitle.md +0 -1
  80. package/src/__tests__/__fixtures__/simple-site/docs/hello.md +0 -55
  81. package/src/__tests__/__fixtures__/simple-site/docs/ipsum.md +0 -5
  82. package/src/__tests__/__fixtures__/simple-site/docs/lorem.md +0 -6
  83. package/src/__tests__/__fixtures__/simple-site/docs/rootAbsoluteSlug.md +0 -7
  84. package/src/__tests__/__fixtures__/simple-site/docs/rootRelativeSlug.md +0 -7
  85. package/src/__tests__/__fixtures__/simple-site/docs/rootResolvedSlug.md +0 -7
  86. package/src/__tests__/__fixtures__/simple-site/docs/rootTryToEscapeSlug.md +0 -7
  87. package/src/__tests__/__fixtures__/simple-site/docs/slugs/absoluteSlug.md +0 -5
  88. package/src/__tests__/__fixtures__/simple-site/docs/slugs/relativeSlug.md +0 -5
  89. package/src/__tests__/__fixtures__/simple-site/docs/slugs/resolvedSlug.md +0 -5
  90. package/src/__tests__/__fixtures__/simple-site/docs/slugs/tryToEscapeSlug.md +0 -5
  91. package/src/__tests__/__fixtures__/simple-site/sidebars.json +0 -37
  92. package/src/__tests__/__fixtures__/simple-site/wrong-sidebars.json +0 -7
  93. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/0-getting-started.md +0 -3
  94. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/1-installation.md +0 -3
  95. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/00_api-overview.md +0 -3
  96. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/01_Core APIs/0 --- Client API.md +0 -1
  97. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/01_Core APIs/1 --- Server API.md +0 -1
  98. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/02_Extension APIs/0. Plugin API.md +0 -1
  99. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/02_Extension APIs/1. Theme API.md +0 -1
  100. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/02_Extension APIs/_category_.yml +0 -1
  101. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/03_api-end.md +0 -3
  102. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/_category_.json +0 -3
  103. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/0-guide2.5.md +0 -8
  104. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/02-guide2.md +0 -7
  105. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/_category_.json +0 -3
  106. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/a-guide4.md +0 -7
  107. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/b-guide5.md +0 -7
  108. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/guide3.md +0 -8
  109. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/z-guide1.md +0 -8
  110. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docusaurus.config.js +0 -14
  111. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/partialAutogeneratedSidebars.js +0 -23
  112. package/src/__tests__/__fixtures__/site-with-doc-label/docs/hello-1.md +0 -8
  113. package/src/__tests__/__fixtures__/site-with-doc-label/docs/hello-2.md +0 -8
  114. package/src/__tests__/__fixtures__/site-with-doc-label/sidebars.json +0 -14
  115. package/src/__tests__/__fixtures__/versioned-site/community/team.md +0 -1
  116. package/src/__tests__/__fixtures__/versioned-site/community_sidebars.json +0 -3
  117. package/src/__tests__/__fixtures__/versioned-site/community_versioned_docs/version-1.0.0/team.md +0 -1
  118. package/src/__tests__/__fixtures__/versioned-site/community_versioned_sidebars/version-1.0.0-sidebars.json +0 -3
  119. package/src/__tests__/__fixtures__/versioned-site/community_versions.json +0 -1
  120. package/src/__tests__/__fixtures__/versioned-site/docs/foo/bar.md +0 -10
  121. package/src/__tests__/__fixtures__/versioned-site/docs/hello.md +0 -4
  122. package/src/__tests__/__fixtures__/versioned-site/docs/slugs/absoluteSlug.md +0 -5
  123. package/src/__tests__/__fixtures__/versioned-site/docs/slugs/relativeSlug.md +0 -5
  124. package/src/__tests__/__fixtures__/versioned-site/docs/slugs/resolvedSlug.md +0 -5
  125. package/src/__tests__/__fixtures__/versioned-site/docs/slugs/tryToEscapeSlug.md +0 -5
  126. package/src/__tests__/__fixtures__/versioned-site/docusaurus.config.js +0 -18
  127. package/src/__tests__/__fixtures__/versioned-site/i18n/en/docusaurus-plugin-content-docs/version-1.0.0/hello.md +0 -4
  128. package/src/__tests__/__fixtures__/versioned-site/i18n/en/docusaurus-plugin-content-docs-community/current/team.md +0 -5
  129. package/src/__tests__/__fixtures__/versioned-site/i18n/fr/docusaurus-plugin-content-docs/version-1.0.0/hello.md +0 -4
  130. package/src/__tests__/__fixtures__/versioned-site/sidebars.json +0 -10
  131. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.0/foo/bar.md +0 -4
  132. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.0/foo/baz.md +0 -1
  133. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.0/hello.md +0 -4
  134. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.1/_partials/somePartial.md +0 -3
  135. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.1/_partials/subfolder/somePartial.md +0 -3
  136. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.1/_somePartial.md +0 -3
  137. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.1/foo/bar.md +0 -1
  138. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.1/hello.md +0 -4
  139. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/rootAbsoluteSlug.md +0 -5
  140. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/rootRelativeSlug.md +0 -5
  141. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/rootResolvedSlug.md +0 -5
  142. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/rootTryToEscapeSlug.md +0 -5
  143. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/slugs/absoluteSlug.md +0 -5
  144. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/slugs/relativeSlug.md +0 -5
  145. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/slugs/resolvedSlug.md +0 -5
  146. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/slugs/tryToEscapeSlug.md +0 -5
  147. package/src/__tests__/__fixtures__/versioned-site/versioned_sidebars/version-1.0.0-sidebars.json +0 -11
  148. package/src/__tests__/__fixtures__/versioned-site/versioned_sidebars/version-1.0.1-sidebars.json +0 -10
  149. package/src/__tests__/__fixtures__/versioned-site/versioned_sidebars/version-withSlugs-sidebars.json +0 -5
  150. package/src/__tests__/__fixtures__/versioned-site/versions.json +0 -5
  151. package/src/__tests__/__snapshots__/cli.test.ts.snap +0 -65
  152. package/src/__tests__/__snapshots__/docs.test.ts.snap +0 -140
  153. package/src/__tests__/__snapshots__/index.test.ts.snap +0 -2550
  154. package/src/__tests__/__snapshots__/translations.test.ts.snap +0 -514
  155. package/src/__tests__/cli.test.ts +0 -337
  156. package/src/__tests__/docFrontMatter.test.ts +0 -359
  157. package/src/__tests__/docs.test.ts +0 -1039
  158. package/src/__tests__/index.test.ts +0 -1910
  159. package/src/__tests__/lastUpdate.test.ts +0 -69
  160. package/src/__tests__/numberPrefix.test.ts +0 -199
  161. package/src/__tests__/options.test.ts +0 -276
  162. package/src/__tests__/props.test.ts +0 -62
  163. package/src/__tests__/slug.test.ts +0 -216
  164. package/src/__tests__/translations.test.ts +0 -164
  165. package/src/__tests__/versions.test.ts +0 -744
  166. package/src/client/__tests__/docsClientUtils.test.ts +0 -371
  167. package/src/markdown/__tests__/__fixtures__/docs/doc-localized.md +0 -1
  168. package/src/markdown/__tests__/__fixtures__/docs/doc1.md +0 -13
  169. package/src/markdown/__tests__/__fixtures__/docs/doc2.md +0 -12
  170. package/src/markdown/__tests__/__fixtures__/docs/doc4.md +0 -19
  171. package/src/markdown/__tests__/__fixtures__/docs/doc5.md +0 -6
  172. package/src/markdown/__tests__/__fixtures__/docs/subdir/doc3.md +0 -3
  173. package/src/markdown/__tests__/__fixtures__/versioned_docs/version-1.0.0/doc2.md +0 -7
  174. package/src/markdown/__tests__/__fixtures__/versioned_docs/version-1.0.0/subdir/doc1.md +0 -3
  175. package/src/markdown/__tests__/__snapshots__/linkify.test.ts.snap +0 -82
  176. package/src/markdown/__tests__/linkify.test.ts +0 -190
  177. package/src/sidebars/__tests__/__fixtures__/sidebars/sidebars-category-shorthand.js +0 -34
  178. package/src/sidebars/__tests__/__fixtures__/sidebars/sidebars-category-wrong-items.json +0 -11
  179. package/src/sidebars/__tests__/__fixtures__/sidebars/sidebars-category-wrong-label.json +0 -11
  180. package/src/sidebars/__tests__/__fixtures__/sidebars/sidebars-category.js +0 -44
  181. package/src/sidebars/__tests__/__fixtures__/sidebars/sidebars-collapsed-first-level.json +0 -20
  182. package/src/sidebars/__tests__/__fixtures__/sidebars/sidebars-collapsed.json +0 -21
  183. package/src/sidebars/__tests__/__fixtures__/sidebars/sidebars-doc-id-not-string.json +0 -10
  184. package/src/sidebars/__tests__/__fixtures__/sidebars/sidebars-first-level-not-category.js +0 -20
  185. package/src/sidebars/__tests__/__fixtures__/sidebars/sidebars-link-wrong-href.json +0 -11
  186. package/src/sidebars/__tests__/__fixtures__/sidebars/sidebars-link-wrong-label.json +0 -11
  187. package/src/sidebars/__tests__/__fixtures__/sidebars/sidebars-link.json +0 -11
  188. package/src/sidebars/__tests__/__fixtures__/sidebars/sidebars-unknown-type.json +0 -14
  189. package/src/sidebars/__tests__/__fixtures__/sidebars/sidebars-wrong-field.json +0 -20
  190. package/src/sidebars/__tests__/__fixtures__/sidebars/sidebars.json +0 -20
  191. package/src/sidebars/__tests__/__snapshots__/index.test.ts.snap +0 -248
  192. package/src/sidebars/__tests__/generator.test.ts +0 -461
  193. package/src/sidebars/__tests__/index.test.ts +0 -204
  194. package/src/sidebars/__tests__/processor.test.ts +0 -237
  195. package/src/sidebars/__tests__/utils.test.ts +0 -695
  196. package/src/sidebars/__tests__/validation.test.ts +0 -105
  197. package/tsconfig.json +0 -9
@@ -1,248 +0,0 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`loadNormalizedSidebars sidebars link 1`] = `
4
- Object {
5
- "docs": Array [
6
- Object {
7
- "collapsed": true,
8
- "collapsible": true,
9
- "items": Array [
10
- Object {
11
- "href": "https://github.com",
12
- "label": "category",
13
- "type": "link",
14
- },
15
- ],
16
- "label": "Test",
17
- "link": undefined,
18
- "type": "category",
19
- },
20
- ],
21
- }
22
- `;
23
-
24
- exports[`loadNormalizedSidebars sidebars with category.collapsed property 1`] = `
25
- Object {
26
- "docs": Array [
27
- Object {
28
- "collapsed": true,
29
- "collapsible": true,
30
- "items": Array [
31
- Object {
32
- "collapsed": false,
33
- "collapsible": true,
34
- "items": Array [
35
- Object {
36
- "id": "doc1",
37
- "type": "doc",
38
- },
39
- ],
40
- "label": "Introduction",
41
- "link": undefined,
42
- "type": "category",
43
- },
44
- ],
45
- "label": "Test",
46
- "link": undefined,
47
- "type": "category",
48
- },
49
- Object {
50
- "collapsed": true,
51
- "collapsible": true,
52
- "items": Array [
53
- Object {
54
- "collapsed": false,
55
- "collapsible": true,
56
- "items": Array [
57
- Object {
58
- "id": "doc2",
59
- "type": "doc",
60
- },
61
- ],
62
- "label": "Powering MDX",
63
- "link": undefined,
64
- "type": "category",
65
- },
66
- ],
67
- "label": "Reference",
68
- "link": undefined,
69
- "type": "category",
70
- },
71
- ],
72
- }
73
- `;
74
-
75
- exports[`loadNormalizedSidebars sidebars with category.collapsed property at first level 1`] = `
76
- Object {
77
- "docs": Array [
78
- Object {
79
- "collapsed": false,
80
- "collapsible": true,
81
- "items": Array [
82
- Object {
83
- "id": "doc1",
84
- "type": "doc",
85
- },
86
- ],
87
- "label": "Introduction",
88
- "link": undefined,
89
- "type": "category",
90
- },
91
- Object {
92
- "collapsed": false,
93
- "collapsible": true,
94
- "items": Array [
95
- Object {
96
- "id": "doc2",
97
- "type": "doc",
98
- },
99
- ],
100
- "label": "Powering MDX",
101
- "link": undefined,
102
- "type": "category",
103
- },
104
- ],
105
- }
106
- `;
107
-
108
- exports[`loadNormalizedSidebars sidebars with deep level of category 1`] = `
109
- Object {
110
- "docs": Array [
111
- Object {
112
- "collapsed": true,
113
- "collapsible": true,
114
- "items": Array [
115
- Object {
116
- "id": "a",
117
- "type": "doc",
118
- },
119
- Object {
120
- "collapsed": true,
121
- "collapsible": true,
122
- "items": Array [
123
- Object {
124
- "collapsed": true,
125
- "collapsible": true,
126
- "items": Array [
127
- Object {
128
- "id": "c",
129
- "type": "doc",
130
- },
131
- Object {
132
- "collapsed": true,
133
- "collapsible": true,
134
- "items": Array [
135
- Object {
136
- "id": "d",
137
- "type": "doc",
138
- },
139
- Object {
140
- "collapsed": true,
141
- "collapsible": true,
142
- "items": Array [
143
- Object {
144
- "id": "e",
145
- "type": "doc",
146
- },
147
- ],
148
- "label": "deeper more more",
149
- "link": undefined,
150
- "type": "category",
151
- },
152
- ],
153
- "label": "level 4",
154
- "link": undefined,
155
- "type": "category",
156
- },
157
- ],
158
- "label": "level 3",
159
- "link": undefined,
160
- "type": "category",
161
- },
162
- Object {
163
- "id": "f",
164
- "type": "doc",
165
- },
166
- ],
167
- "label": "level 2",
168
- "link": undefined,
169
- "type": "category",
170
- },
171
- ],
172
- "label": "level 1",
173
- "link": undefined,
174
- "type": "category",
175
- },
176
- ],
177
- }
178
- `;
179
-
180
- exports[`loadNormalizedSidebars sidebars with first level not a category 1`] = `
181
- Object {
182
- "docs": Array [
183
- Object {
184
- "collapsed": true,
185
- "collapsible": true,
186
- "items": Array [
187
- Object {
188
- "id": "greeting",
189
- "type": "doc",
190
- },
191
- ],
192
- "label": "Getting Started",
193
- "link": undefined,
194
- "type": "category",
195
- },
196
- Object {
197
- "id": "api",
198
- "type": "doc",
199
- },
200
- ],
201
- }
202
- `;
203
-
204
- exports[`loadNormalizedSidebars sidebars with known sidebar item type 1`] = `
205
- Object {
206
- "docs": Array [
207
- Object {
208
- "collapsed": true,
209
- "collapsible": true,
210
- "items": Array [
211
- Object {
212
- "id": "foo/bar",
213
- "type": "doc",
214
- },
215
- Object {
216
- "id": "foo/baz",
217
- "type": "doc",
218
- },
219
- Object {
220
- "href": "https://github.com",
221
- "label": "Github",
222
- "type": "link",
223
- },
224
- Object {
225
- "id": "hello",
226
- "type": "ref",
227
- },
228
- ],
229
- "label": "Test",
230
- "link": undefined,
231
- "type": "category",
232
- },
233
- Object {
234
- "collapsed": true,
235
- "collapsible": true,
236
- "items": Array [
237
- Object {
238
- "id": "hello",
239
- "type": "doc",
240
- },
241
- ],
242
- "label": "Guides",
243
- "link": undefined,
244
- "type": "category",
245
- },
246
- ],
247
- }
248
- `;
@@ -1,461 +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 {CategoryMetadataFile, DefaultSidebarItemsGenerator} from '../generator';
9
- import {Sidebar, SidebarItemsGenerator} from '../types';
10
- import fs from 'fs-extra';
11
- import {DefaultNumberPrefixParser} from '../../numberPrefix';
12
-
13
- describe('DefaultSidebarItemsGenerator', () => {
14
- function testDefaultSidebarItemsGenerator(
15
- params: Partial<Parameters<SidebarItemsGenerator>[0]>,
16
- ) {
17
- return DefaultSidebarItemsGenerator({
18
- numberPrefixParser: DefaultNumberPrefixParser,
19
- item: {
20
- type: 'autogenerated',
21
- dirName: '.',
22
- },
23
- version: {
24
- versionName: 'current',
25
- contentPath: 'docs',
26
- },
27
- docs: [],
28
- options: {
29
- sidebarCollapsed: true,
30
- sidebarCollapsible: true,
31
- },
32
- ...params,
33
- });
34
- }
35
-
36
- function mockCategoryMetadataFiles(
37
- categoryMetadataFiles: Record<string, Partial<CategoryMetadataFile>>,
38
- ) {
39
- jest
40
- .spyOn(fs, 'pathExists')
41
- .mockImplementation(
42
- (metadataFilePath) =>
43
- 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
- JSON.stringify(categoryMetadataFiles[metadataFilePath]),
49
- );
50
- }
51
-
52
- test('generates empty sidebar slice when no docs and emit a warning', async () => {
53
- const consoleWarn = jest.spyOn(console, 'warn');
54
- const sidebarSlice = await testDefaultSidebarItemsGenerator({
55
- docs: [],
56
- });
57
- expect(sidebarSlice).toEqual([]);
58
- expect(consoleWarn).toHaveBeenCalledWith(
59
- expect.stringMatching(
60
- /No docs found in dir .: can't auto-generate a sidebar/,
61
- ),
62
- );
63
- });
64
-
65
- test('generates simple flat sidebar', async () => {
66
- const sidebarSlice = await DefaultSidebarItemsGenerator({
67
- numberPrefixParser: DefaultNumberPrefixParser,
68
- item: {
69
- type: 'autogenerated',
70
- dirName: '.',
71
- },
72
- version: {
73
- versionName: 'current',
74
- contentPath: '',
75
- },
76
- docs: [
77
- {
78
- id: 'doc1',
79
- source: 'doc1.md',
80
- sourceDirName: '.',
81
- sidebarPosition: 2,
82
- frontMatter: {
83
- sidebar_label: 'doc1 sidebar label',
84
- },
85
- },
86
- {
87
- id: 'doc2',
88
- source: 'doc2.md',
89
- sourceDirName: '.',
90
- sidebarPosition: 3,
91
- frontMatter: {},
92
- },
93
- {
94
- id: 'doc3',
95
- source: 'doc3.md',
96
- sourceDirName: '.',
97
- sidebarPosition: 1,
98
- frontMatter: {},
99
- },
100
- {
101
- id: 'doc4',
102
- source: 'doc4.md',
103
- sourceDirName: '.',
104
- sidebarPosition: 1.5,
105
- frontMatter: {},
106
- },
107
- {
108
- id: 'doc5',
109
- source: 'doc5.md',
110
- sourceDirName: '.',
111
- sidebarPosition: undefined,
112
- frontMatter: {},
113
- },
114
- ],
115
- options: {
116
- sidebarCollapsed: true,
117
- sidebarCollapsible: true,
118
- },
119
- });
120
-
121
- expect(sidebarSlice).toEqual([
122
- {type: 'doc', id: 'doc3'},
123
- {type: 'doc', id: 'doc4'},
124
- {type: 'doc', id: 'doc1', label: 'doc1 sidebar label'},
125
- {type: 'doc', id: 'doc2'},
126
- {type: 'doc', id: 'doc5'},
127
- ] as Sidebar);
128
- });
129
-
130
- test('generates complex nested sidebar', async () => {
131
- mockCategoryMetadataFiles({
132
- '02-Guides/_category_.json': {collapsed: false} as CategoryMetadataFile,
133
- '02-Guides/01-SubGuides/_category_.yml': {
134
- label: 'SubGuides (metadata file label)',
135
- link: {
136
- type: 'generated-index',
137
- slug: 'subguides-generated-index-slug',
138
- title: 'subguides-title',
139
- description: 'subguides-description',
140
- },
141
- },
142
- });
143
-
144
- const sidebarSlice = await DefaultSidebarItemsGenerator({
145
- numberPrefixParser: DefaultNumberPrefixParser,
146
- item: {
147
- type: 'autogenerated',
148
- dirName: '.',
149
- },
150
- version: {
151
- versionName: 'current',
152
- contentPath: '',
153
- },
154
- docs: [
155
- {
156
- id: 'intro',
157
- source: 'intro.md',
158
- sourceDirName: '.',
159
- sidebarPosition: 1,
160
- frontMatter: {},
161
- },
162
- {
163
- id: 'tutorials-index',
164
- source: 'index.md',
165
- sourceDirName: '01-Tutorials',
166
- sidebarPosition: 2,
167
- frontMatter: {},
168
- },
169
- {
170
- id: 'tutorial2',
171
- source: 'tutorial2.md',
172
- sourceDirName: '01-Tutorials',
173
- sidebarPosition: 2,
174
- frontMatter: {},
175
- },
176
- {
177
- id: 'tutorial1',
178
- source: 'tutorial1.md',
179
- sourceDirName: '01-Tutorials',
180
- sidebarPosition: 1,
181
- frontMatter: {},
182
- },
183
- {
184
- id: 'guides-index',
185
- source: '02-Guides.md', // TODO should we allow to just use "Guides.md" to have an index?
186
- sourceDirName: '02-Guides',
187
- frontMatter: {},
188
- },
189
- {
190
- id: 'guide2',
191
- source: 'guide2.md',
192
- sourceDirName: '02-Guides',
193
- sidebarPosition: 2,
194
- frontMatter: {},
195
- },
196
- {
197
- id: 'guide1',
198
- source: 'guide1.md',
199
- sourceDirName: '02-Guides',
200
- sidebarPosition: 1,
201
- frontMatter: {},
202
- },
203
- {
204
- id: 'nested-guide',
205
- source: 'nested-guide.md',
206
- sourceDirName: '02-Guides/01-SubGuides',
207
- sidebarPosition: undefined,
208
- frontMatter: {},
209
- },
210
- {
211
- id: 'end',
212
- source: 'end.md',
213
- sourceDirName: '.',
214
- sidebarPosition: 3,
215
- frontMatter: {},
216
- },
217
- ],
218
- options: {
219
- sidebarCollapsed: true,
220
- sidebarCollapsible: true,
221
- },
222
- });
223
-
224
- expect(sidebarSlice).toEqual([
225
- {type: 'doc', id: 'intro'},
226
- {
227
- type: 'category',
228
- label: 'Tutorials',
229
- collapsed: true,
230
- collapsible: true,
231
- link: {
232
- type: 'doc',
233
- id: 'tutorials-index',
234
- },
235
- items: [
236
- {type: 'doc', id: 'tutorial1'},
237
- {type: 'doc', id: 'tutorial2'},
238
- ],
239
- },
240
- {
241
- type: 'category',
242
- label: 'Guides',
243
- collapsed: false,
244
- collapsible: true,
245
- link: {
246
- type: 'doc',
247
- id: 'guides-index',
248
- },
249
- items: [
250
- {type: 'doc', id: 'guide1'},
251
- {
252
- type: 'category',
253
- label: 'SubGuides (metadata file label)',
254
- collapsed: true,
255
- collapsible: true,
256
- items: [{type: 'doc', id: 'nested-guide'}],
257
- link: {
258
- type: 'generated-index',
259
- slug: 'subguides-generated-index-slug',
260
- title: 'subguides-title',
261
- description: 'subguides-description',
262
- },
263
- },
264
- {type: 'doc', id: 'guide2'},
265
- ],
266
- },
267
- {type: 'doc', id: 'end'},
268
- ] as Sidebar);
269
- });
270
-
271
- test('generates subfolder sidebar', async () => {
272
- // Ensure that category metadata file is correctly read
273
- // fix edge case found in https://github.com/facebook/docusaurus/issues/4638
274
- mockCategoryMetadataFiles({
275
- 'subfolder/subsubfolder/subsubsubfolder2/_category_.yml': {
276
- position: 2,
277
- label: 'subsubsubfolder2 (_category_.yml label)',
278
- },
279
- 'subfolder/subsubfolder/subsubsubfolder3/_category_.json': {
280
- position: 1,
281
- label: 'subsubsubfolder3 (_category_.json label)',
282
- collapsible: false,
283
- collapsed: false,
284
- },
285
- });
286
-
287
- const sidebarSlice = await DefaultSidebarItemsGenerator({
288
- numberPrefixParser: DefaultNumberPrefixParser,
289
- item: {
290
- type: 'autogenerated',
291
- dirName: 'subfolder/subsubfolder',
292
- },
293
- version: {
294
- versionName: 'current',
295
- contentPath: '',
296
- },
297
- docs: [
298
- {
299
- id: 'doc1',
300
- source: 'doc1.md',
301
- sourceDirName: 'subfolder/subsubfolder',
302
- sidebarPosition: undefined,
303
- frontMatter: {},
304
- },
305
- {
306
- id: 'doc2',
307
- source: 'doc2.md',
308
- sourceDirName: 'subfolder',
309
- sidebarPosition: undefined,
310
- frontMatter: {},
311
- },
312
- {
313
- id: 'doc3',
314
- source: 'doc3.md',
315
- sourceDirName: '.',
316
- sidebarPosition: undefined,
317
- frontMatter: {},
318
- },
319
- {
320
- id: 'doc4',
321
- source: 'doc4.md',
322
- sourceDirName: 'subfolder/subsubfolder',
323
- sidebarPosition: undefined,
324
- frontMatter: {},
325
- },
326
- {
327
- id: 'doc5',
328
- source: 'doc5.md',
329
- sourceDirName: 'subfolder/subsubfolder/subsubsubfolder',
330
- sidebarPosition: undefined,
331
- frontMatter: {},
332
- },
333
- {
334
- id: 'doc6',
335
- source: 'doc6.md',
336
- sourceDirName: 'subfolder/subsubfolder/subsubsubfolder2',
337
- sidebarPosition: undefined,
338
- frontMatter: {},
339
- },
340
- {
341
- id: 'doc7',
342
- source: 'doc7.md',
343
- sourceDirName: 'subfolder/subsubfolder/subsubsubfolder3',
344
- sidebarPosition: 2,
345
- frontMatter: {},
346
- },
347
- {
348
- id: 'doc8',
349
- source: 'doc8.md',
350
- sourceDirName: 'subfolder/subsubfolder/subsubsubfolder3',
351
- sidebarPosition: 1,
352
- frontMatter: {},
353
- },
354
- ],
355
- options: {
356
- sidebarCollapsed: true,
357
- sidebarCollapsible: true,
358
- },
359
- });
360
-
361
- expect(sidebarSlice).toEqual([
362
- {
363
- type: 'category',
364
- label: 'subsubsubfolder3 (_category_.json label)',
365
- collapsed: false,
366
- collapsible: false,
367
- items: [
368
- {type: 'doc', id: 'doc8'},
369
- {type: 'doc', id: 'doc7'},
370
- ],
371
- },
372
- {
373
- type: 'category',
374
- label: 'subsubsubfolder2 (_category_.yml label)',
375
- collapsed: true,
376
- collapsible: true,
377
- items: [{type: 'doc', id: 'doc6'}],
378
- },
379
- {type: 'doc', id: 'doc1'},
380
- {type: 'doc', id: 'doc4'},
381
- {
382
- type: 'category',
383
- label: 'subsubsubfolder',
384
- collapsed: true,
385
- collapsible: true,
386
- items: [{type: 'doc', id: 'doc5'}],
387
- },
388
- ] as Sidebar);
389
- });
390
-
391
- test('uses explicit link over the index/readme.{md,mdx} naming convention', async () => {
392
- mockCategoryMetadataFiles({
393
- 'Category/_category_.yml': {
394
- label: 'Category label',
395
- link: {
396
- type: 'doc',
397
- id: 'doc3', // Using a "local doc id" ("doc1" instead of "parent/doc1") on purpose
398
- },
399
- },
400
- });
401
-
402
- const sidebarSlice = await DefaultSidebarItemsGenerator({
403
- numberPrefixParser: DefaultNumberPrefixParser,
404
- item: {
405
- type: 'autogenerated',
406
- dirName: '.',
407
- },
408
- version: {
409
- versionName: 'current',
410
- contentPath: '',
411
- },
412
- docs: [
413
- {
414
- id: 'parent/doc1',
415
- source: 'index.md',
416
- sourceDirName: 'Category',
417
- frontMatter: {},
418
- },
419
- {
420
- id: 'parent/doc2',
421
- source: 'index.md',
422
- sourceDirName: 'Category',
423
- frontMatter: {},
424
- },
425
- {
426
- id: 'parent/doc3',
427
- source: 'doc3.md',
428
- sourceDirName: 'Category',
429
- frontMatter: {},
430
- },
431
- ],
432
- options: {
433
- sidebarCollapsed: true,
434
- sidebarCollapsible: true,
435
- },
436
- });
437
-
438
- expect(sidebarSlice).toEqual([
439
- {
440
- type: 'category',
441
- label: 'Category label',
442
- collapsed: true,
443
- collapsible: true,
444
- link: {
445
- id: 'parent/doc3',
446
- type: 'doc',
447
- },
448
- items: [
449
- {
450
- id: 'parent/doc1',
451
- type: 'doc',
452
- },
453
- {
454
- id: 'parent/doc2',
455
- type: 'doc',
456
- },
457
- ],
458
- },
459
- ] as Sidebar);
460
- });
461
- });