@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,204 +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 path from 'path';
9
- import {
10
- loadNormalizedSidebars,
11
- DefaultSidebars,
12
- DisabledSidebars,
13
- } from '../index';
14
- import type {NormalizeSidebarsParams, VersionMetadata} from '../../types';
15
-
16
- describe('loadNormalizedSidebars', () => {
17
- const fixtureDir = path.join(__dirname, '__fixtures__', 'sidebars');
18
- const options: NormalizeSidebarsParams = {
19
- sidebarCollapsed: true,
20
- sidebarCollapsible: true,
21
- version: {
22
- versionName: 'version',
23
- versionPath: 'versionPath',
24
- } as VersionMetadata,
25
- };
26
- test('sidebars with known sidebar item type', async () => {
27
- const sidebarPath = path.join(fixtureDir, 'sidebars.json');
28
- const result = loadNormalizedSidebars(sidebarPath, options);
29
- expect(result).toMatchSnapshot();
30
- });
31
-
32
- test('sidebars with deep level of category', async () => {
33
- const sidebarPath = path.join(fixtureDir, 'sidebars-category.js');
34
- const result = loadNormalizedSidebars(sidebarPath, options);
35
- expect(result).toMatchSnapshot();
36
- });
37
-
38
- test('sidebars shorthand and longform lead to exact same sidebar', async () => {
39
- const sidebarPath1 = path.join(fixtureDir, 'sidebars-category.js');
40
- const sidebarPath2 = path.join(
41
- fixtureDir,
42
- 'sidebars-category-shorthand.js',
43
- );
44
- const sidebar1 = loadNormalizedSidebars(sidebarPath1, options);
45
- const sidebar2 = loadNormalizedSidebars(sidebarPath2, options);
46
- expect(sidebar1).toEqual(sidebar2);
47
- });
48
-
49
- test('sidebars with category but category.items is not an array', async () => {
50
- const sidebarPath = path.join(
51
- fixtureDir,
52
- 'sidebars-category-wrong-items.json',
53
- );
54
- expect(() => loadNormalizedSidebars(sidebarPath, options))
55
- .toThrowErrorMatchingInlineSnapshot(`
56
- "{
57
- \\"type\\": \\"category\\",
58
- \\"label\\": \\"Category Label\\",
59
- \\"items\\" [1]: \\"doc1\\"
60
- }
61
- 
62
- [1] \\"items\\" must be an array"
63
- `);
64
- });
65
-
66
- test('sidebars with category but category label is not a string', async () => {
67
- const sidebarPath = path.join(
68
- fixtureDir,
69
- 'sidebars-category-wrong-label.json',
70
- );
71
- expect(() => loadNormalizedSidebars(sidebarPath, options))
72
- .toThrowErrorMatchingInlineSnapshot(`
73
- "{
74
- \\"type\\": \\"category\\",
75
- \\"items\\": [
76
- \\"doc1\\"
77
- ],
78
- \\"label\\" [1]: true
79
- }
80
- 
81
- [1] \\"label\\" must be a string"
82
- `);
83
- });
84
-
85
- test('sidebars item doc but id is not a string', async () => {
86
- const sidebarPath = path.join(
87
- fixtureDir,
88
- 'sidebars-doc-id-not-string.json',
89
- );
90
- expect(() => loadNormalizedSidebars(sidebarPath, options))
91
- .toThrowErrorMatchingInlineSnapshot(`
92
- "{
93
- \\"type\\": \\"doc\\",
94
- \\"id\\" [1]: [
95
- \\"doc1\\"
96
- ]
97
- }
98
- 
99
- [1] \\"id\\" must be a string"
100
- `);
101
- });
102
-
103
- test('sidebars with first level not a category', async () => {
104
- const sidebarPath = path.join(
105
- fixtureDir,
106
- 'sidebars-first-level-not-category.js',
107
- );
108
- const result = loadNormalizedSidebars(sidebarPath, options);
109
- expect(result).toMatchSnapshot();
110
- });
111
-
112
- test('sidebars link', async () => {
113
- const sidebarPath = path.join(fixtureDir, 'sidebars-link.json');
114
- const result = loadNormalizedSidebars(sidebarPath, options);
115
- expect(result).toMatchSnapshot();
116
- });
117
-
118
- test('sidebars link wrong label', async () => {
119
- const sidebarPath = path.join(fixtureDir, 'sidebars-link-wrong-label.json');
120
- expect(() => loadNormalizedSidebars(sidebarPath, options))
121
- .toThrowErrorMatchingInlineSnapshot(`
122
- "{
123
- \\"type\\": \\"link\\",
124
- \\"href\\": \\"https://github.com\\",
125
- \\"label\\" [1]: false
126
- }
127
- 
128
- [1] \\"label\\" must be a string"
129
- `);
130
- });
131
-
132
- test('sidebars link wrong href', async () => {
133
- const sidebarPath = path.join(fixtureDir, 'sidebars-link-wrong-href.json');
134
- expect(() => loadNormalizedSidebars(sidebarPath, options))
135
- .toThrowErrorMatchingInlineSnapshot(`
136
- "{
137
- \\"type\\": \\"link\\",
138
- \\"label\\": \\"GitHub\\",
139
- \\"href\\" [1]: [
140
- \\"example.com\\"
141
- ]
142
- }
143
- 
144
- [1] \\"href\\" contains an invalid value"
145
- `);
146
- });
147
-
148
- test('sidebars with unknown sidebar item type', async () => {
149
- const sidebarPath = path.join(fixtureDir, 'sidebars-unknown-type.json');
150
- expect(() => loadNormalizedSidebars(sidebarPath, options))
151
- .toThrowErrorMatchingInlineSnapshot(`
152
- "{
153
- \\"type\\": \\"superman\\",
154
- \\"undefined\\" [1]: -- missing --
155
- }
156
- 
157
- [1] Unknown sidebar item type \\"superman\\"."
158
- `);
159
- });
160
-
161
- test('sidebars with known sidebar item type but wrong field', async () => {
162
- const sidebarPath = path.join(fixtureDir, 'sidebars-wrong-field.json');
163
- expect(() => loadNormalizedSidebars(sidebarPath, options))
164
- .toThrowErrorMatchingInlineSnapshot(`
165
- "{
166
- \\"type\\": \\"category\\",
167
- \\"label\\": \\"category\\",
168
- \\"href\\": \\"https://github.com\\",
169
- \\"items\\" [1]: -- missing --
170
- }
171
- 
172
- [1] \\"items\\" is required"
173
- `);
174
- });
175
-
176
- test('unexisting path', () => {
177
- expect(loadNormalizedSidebars('badpath', options)).toEqual(
178
- DisabledSidebars,
179
- );
180
- });
181
-
182
- test('undefined path', () => {
183
- expect(loadNormalizedSidebars(undefined, options)).toEqual(DefaultSidebars);
184
- });
185
-
186
- test('literal false path', () => {
187
- expect(loadNormalizedSidebars(false, options)).toEqual(DisabledSidebars);
188
- });
189
-
190
- test('sidebars with category.collapsed property', async () => {
191
- const sidebarPath = path.join(fixtureDir, 'sidebars-collapsed.json');
192
- const result = loadNormalizedSidebars(sidebarPath, options);
193
- expect(result).toMatchSnapshot();
194
- });
195
-
196
- test('sidebars with category.collapsed property at first level', async () => {
197
- const sidebarPath = path.join(
198
- fixtureDir,
199
- 'sidebars-collapsed-first-level.json',
200
- );
201
- const result = loadNormalizedSidebars(sidebarPath, options);
202
- expect(result).toMatchSnapshot();
203
- });
204
- });
@@ -1,237 +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 {processSidebars, SidebarProcessorParams} from '../processor';
9
- import type {
10
- SidebarItem,
11
- SidebarItemsGenerator,
12
- Sidebars,
13
- NormalizedSidebars,
14
- } from '../types';
15
- import {DefaultSidebarItemsGenerator} from '../generator';
16
- import {createSlugger} from '@docusaurus/utils';
17
- import {VersionMetadata} from '../../types';
18
- import {DefaultNumberPrefixParser} from '../../numberPrefix';
19
-
20
- describe('processSidebars', () => {
21
- function createStaticSidebarItemGenerator(
22
- sidebarSlice: SidebarItem[],
23
- ): SidebarItemsGenerator {
24
- return jest.fn(async () => sidebarSlice);
25
- }
26
-
27
- const StaticGeneratedSidebarSlice: SidebarItem[] = [
28
- {type: 'doc', id: 'doc-generated-id-1'},
29
- {type: 'doc', id: 'doc-generated-id-2'},
30
- ];
31
-
32
- const StaticSidebarItemsGenerator: SidebarItemsGenerator =
33
- createStaticSidebarItemGenerator(StaticGeneratedSidebarSlice);
34
-
35
- // @ts-expect-error: good enough for this test
36
- const version: VersionMetadata = {
37
- versionName: '1.0.0',
38
- versionPath: '/docs/1.0.0',
39
- };
40
-
41
- const params: SidebarProcessorParams = {
42
- sidebarItemsGenerator: StaticSidebarItemsGenerator,
43
- docs: [],
44
- version,
45
- numberPrefixParser: DefaultNumberPrefixParser,
46
- categoryLabelSlugger: createSlugger(),
47
- sidebarOptions: {
48
- sidebarCollapsed: true,
49
- sidebarCollapsible: true,
50
- },
51
- };
52
-
53
- async function testProcessSidebars(
54
- unprocessedSidebars: NormalizedSidebars,
55
- paramsOverrides: Partial<SidebarProcessorParams> = {},
56
- ) {
57
- return processSidebars(unprocessedSidebars, {
58
- ...params,
59
- ...paramsOverrides,
60
- });
61
- }
62
-
63
- test('let sidebars without autogenerated items untouched', async () => {
64
- const unprocessedSidebars: NormalizedSidebars = {
65
- someSidebar: [
66
- {type: 'doc', id: 'doc1'},
67
- {
68
- type: 'category',
69
- collapsed: false,
70
- collapsible: true,
71
- items: [{type: 'doc', id: 'doc2'}],
72
- label: 'Category',
73
- },
74
- {type: 'link', href: 'https://facebook.com', label: 'FB'},
75
- ],
76
- secondSidebar: [
77
- {type: 'doc', id: 'doc3'},
78
- {type: 'link', href: 'https://instagram.com', label: 'IG'},
79
- {
80
- type: 'category',
81
- collapsed: false,
82
- collapsible: true,
83
- items: [{type: 'doc', id: 'doc4'}],
84
- label: 'Category',
85
- },
86
- ],
87
- };
88
-
89
- const processedSidebar = await testProcessSidebars(unprocessedSidebars);
90
- expect(processedSidebar).toEqual(unprocessedSidebars);
91
- });
92
-
93
- test('replace autogenerated items by generated sidebars slices', async () => {
94
- const unprocessedSidebars: NormalizedSidebars = {
95
- someSidebar: [
96
- {type: 'doc', id: 'doc1'},
97
- {
98
- type: 'category',
99
- label: 'Category',
100
- link: {
101
- type: 'generated-index',
102
- slug: 'category-generated-index-slug',
103
- permalink: 'category-generated-index-permalink',
104
- },
105
- collapsed: false,
106
- collapsible: true,
107
- items: [
108
- {type: 'doc', id: 'doc2'},
109
- {type: 'autogenerated', dirName: 'dir1'},
110
- ],
111
- },
112
- {type: 'link', href: 'https://facebook.com', label: 'FB'},
113
- ],
114
- secondSidebar: [
115
- {type: 'doc', id: 'doc3'},
116
- {type: 'autogenerated', dirName: 'dir2'},
117
- {type: 'link', href: 'https://instagram.com', label: 'IG'},
118
- {type: 'autogenerated', dirName: 'dir3'},
119
- {
120
- type: 'category',
121
- label: 'Category',
122
- collapsed: false,
123
- collapsible: true,
124
- items: [{type: 'doc', id: 'doc4'}],
125
- },
126
- ],
127
- };
128
-
129
- const processedSidebar = await testProcessSidebars(unprocessedSidebars);
130
-
131
- expect(StaticSidebarItemsGenerator).toHaveBeenCalledTimes(3);
132
- expect(StaticSidebarItemsGenerator).toHaveBeenCalledWith({
133
- defaultSidebarItemsGenerator: DefaultSidebarItemsGenerator,
134
- item: {type: 'autogenerated', dirName: 'dir1'},
135
- docs: params.docs,
136
- version: {
137
- versionName: version.versionName,
138
- },
139
- numberPrefixParser: DefaultNumberPrefixParser,
140
- options: params.sidebarOptions,
141
- });
142
- expect(StaticSidebarItemsGenerator).toHaveBeenCalledWith({
143
- defaultSidebarItemsGenerator: DefaultSidebarItemsGenerator,
144
- item: {type: 'autogenerated', dirName: 'dir2'},
145
- docs: params.docs,
146
- version: {
147
- versionName: version.versionName,
148
- },
149
- numberPrefixParser: DefaultNumberPrefixParser,
150
- options: params.sidebarOptions,
151
- });
152
- expect(StaticSidebarItemsGenerator).toHaveBeenCalledWith({
153
- defaultSidebarItemsGenerator: DefaultSidebarItemsGenerator,
154
- item: {type: 'autogenerated', dirName: 'dir3'},
155
- docs: params.docs,
156
- version: {
157
- versionName: version.versionName,
158
- },
159
- numberPrefixParser: DefaultNumberPrefixParser,
160
- options: params.sidebarOptions,
161
- });
162
-
163
- expect(processedSidebar).toEqual({
164
- someSidebar: [
165
- {type: 'doc', id: 'doc1'},
166
- {
167
- type: 'category',
168
- label: 'Category',
169
- link: {
170
- type: 'generated-index',
171
- slug: 'category-generated-index-slug',
172
- permalink: 'category-generated-index-permalink',
173
- },
174
- collapsed: false,
175
- collapsible: true,
176
- items: [{type: 'doc', id: 'doc2'}, ...StaticGeneratedSidebarSlice],
177
- },
178
- {type: 'link', href: 'https://facebook.com', label: 'FB'},
179
- ],
180
- secondSidebar: [
181
- {type: 'doc', id: 'doc3'},
182
- ...StaticGeneratedSidebarSlice,
183
- {type: 'link', href: 'https://instagram.com', label: 'IG'},
184
- ...StaticGeneratedSidebarSlice,
185
- {
186
- type: 'category',
187
- label: 'Category',
188
- collapsed: false,
189
- collapsible: true,
190
- items: [{type: 'doc', id: 'doc4'}],
191
- },
192
- ],
193
- } as Sidebars);
194
- });
195
-
196
- test('ensure generated items are normalized', async () => {
197
- const sidebarSliceContainingCategoryGeneratedIndex: SidebarItem[] = [
198
- {
199
- type: 'category',
200
- label: 'Generated category',
201
- link: {
202
- type: 'generated-index',
203
- slug: 'generated-cat-index-slug',
204
- // @ts-expect-error: TODO undefined should be allowed here, typing error needing refactor
205
- permalink: undefined,
206
- },
207
- },
208
- ];
209
-
210
- const unprocessedSidebars: NormalizedSidebars = {
211
- someSidebar: [{type: 'autogenerated', dirName: 'dir2'}],
212
- };
213
-
214
- const processedSidebar = await testProcessSidebars(unprocessedSidebars, {
215
- sidebarItemsGenerator: createStaticSidebarItemGenerator(
216
- sidebarSliceContainingCategoryGeneratedIndex,
217
- ),
218
- });
219
-
220
- expect(processedSidebar).toEqual({
221
- someSidebar: [
222
- {
223
- type: 'category',
224
- label: 'Generated category',
225
- link: {
226
- type: 'generated-index',
227
- slug: 'generated-cat-index-slug',
228
- permalink: '/docs/1.0.0/generated-cat-index-slug',
229
- },
230
- items: [],
231
- collapsible: true,
232
- collapsed: true,
233
- },
234
- ],
235
- } as Sidebars);
236
- });
237
- });