@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,695 +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
- createSidebarsUtils,
10
- collectSidebarDocItems,
11
- collectSidebarCategories,
12
- collectSidebarLinks,
13
- transformSidebarItems,
14
- collectSidebarsDocIds,
15
- SidebarNavigation,
16
- toDocNavigationLink,
17
- toNavigationLink,
18
- } from '../utils';
19
- import type {Sidebar, Sidebars} from '../types';
20
- import {DocMetadataBase, DocNavLink} from '../../types';
21
-
22
- describe('createSidebarsUtils', () => {
23
- const sidebar1: Sidebar = [
24
- {
25
- type: 'category',
26
- collapsed: false,
27
- collapsible: true,
28
- label: 'S1 Category',
29
- items: [
30
- {
31
- type: 'category',
32
- collapsed: false,
33
- collapsible: true,
34
- label: 'S1 Subcategory',
35
- items: [{type: 'doc', id: 'doc1'}],
36
- },
37
- {type: 'doc', id: 'doc2'},
38
- ],
39
- },
40
- ];
41
-
42
- const sidebar2: Sidebar = [
43
- {
44
- type: 'category',
45
- collapsed: false,
46
- collapsible: true,
47
- label: 'S2 Category',
48
- items: [
49
- {type: 'doc', id: 'doc3'},
50
- {type: 'doc', id: 'doc4'},
51
- ],
52
- },
53
- ];
54
-
55
- const sidebar3: Sidebar = [
56
- {
57
- type: 'category',
58
- collapsed: false,
59
- collapsible: true,
60
- label: 'S3 Category',
61
- link: {
62
- type: 'doc',
63
- id: 'doc5',
64
- },
65
- items: [
66
- {
67
- type: 'category',
68
- collapsed: false,
69
- collapsible: true,
70
- label: 'S3 SubCategory',
71
- link: {
72
- type: 'generated-index',
73
- slug: '/s3-subcategory-index-slug',
74
- permalink: '/s3-subcategory-index-permalink',
75
- },
76
- items: [
77
- {
78
- type: 'category',
79
- collapsed: false,
80
- collapsible: true,
81
- label: 'S3 SubSubCategory',
82
- link: {
83
- type: 'generated-index',
84
- slug: '/s3-subsubcategory-slug',
85
- permalink: '/s3-subsubcategory-index-permalink',
86
- },
87
- items: [
88
- {type: 'doc', id: 'doc6'},
89
- {type: 'doc', id: 'doc7'},
90
- ],
91
- },
92
- ],
93
- },
94
- ],
95
- },
96
- ];
97
-
98
- const sidebars: Sidebars = {sidebar1, sidebar2, sidebar3};
99
-
100
- const {
101
- getFirstDocIdOfFirstSidebar,
102
- getSidebarNameByDocId,
103
- getDocNavigation,
104
- getCategoryGeneratedIndexNavigation,
105
- getCategoryGeneratedIndexList,
106
- } = createSidebarsUtils(sidebars);
107
-
108
- test('getSidebarNameByDocId', async () => {
109
- expect(getFirstDocIdOfFirstSidebar()).toEqual('doc1');
110
- });
111
-
112
- test('getSidebarNameByDocId', async () => {
113
- expect(getSidebarNameByDocId('doc1')).toEqual('sidebar1');
114
- expect(getSidebarNameByDocId('doc2')).toEqual('sidebar1');
115
- expect(getSidebarNameByDocId('doc3')).toEqual('sidebar2');
116
- expect(getSidebarNameByDocId('doc4')).toEqual('sidebar2');
117
- expect(getSidebarNameByDocId('doc5')).toEqual('sidebar3');
118
- expect(getSidebarNameByDocId('doc6')).toEqual('sidebar3');
119
- expect(getSidebarNameByDocId('doc7')).toEqual('sidebar3');
120
- expect(getSidebarNameByDocId('unknown_id')).toEqual(undefined);
121
- });
122
-
123
- test('getDocNavigation', async () => {
124
- expect(getDocNavigation('doc1')).toEqual({
125
- sidebarName: 'sidebar1',
126
- previous: undefined,
127
- next: {
128
- type: 'doc',
129
- id: 'doc2',
130
- },
131
- } as SidebarNavigation);
132
- expect(getDocNavigation('doc2')).toEqual({
133
- sidebarName: 'sidebar1',
134
- previous: {
135
- type: 'doc',
136
- id: 'doc1',
137
- },
138
- next: undefined,
139
- } as SidebarNavigation);
140
-
141
- expect(getDocNavigation('doc3')).toEqual({
142
- sidebarName: 'sidebar2',
143
- previous: undefined,
144
- next: {
145
- type: 'doc',
146
- id: 'doc4',
147
- },
148
- } as SidebarNavigation);
149
- expect(getDocNavigation('doc4')).toEqual({
150
- sidebarName: 'sidebar2',
151
- previous: {
152
- type: 'doc',
153
- id: 'doc3',
154
- },
155
- next: undefined,
156
- } as SidebarNavigation);
157
-
158
- expect(getDocNavigation('doc5')).toMatchObject({
159
- sidebarName: 'sidebar3',
160
- previous: undefined,
161
- next: {
162
- type: 'category',
163
- label: 'S3 SubCategory',
164
- },
165
- } as SidebarNavigation);
166
- expect(getDocNavigation('doc6')).toMatchObject({
167
- sidebarName: 'sidebar3',
168
- previous: {
169
- type: 'category',
170
- label: 'S3 SubSubCategory',
171
- },
172
- next: {
173
- type: 'doc',
174
- id: 'doc7',
175
- },
176
- } as SidebarNavigation);
177
- expect(getDocNavigation('doc7')).toMatchObject({
178
- sidebarName: 'sidebar3',
179
- previous: {
180
- type: 'doc',
181
- id: 'doc6',
182
- },
183
- next: undefined,
184
- } as SidebarNavigation);
185
- });
186
-
187
- test('getCategoryGeneratedIndexNavigation', async () => {
188
- expect(
189
- getCategoryGeneratedIndexNavigation('/s3-subcategory-index-permalink'),
190
- ).toMatchObject({
191
- sidebarName: 'sidebar3',
192
- previous: {
193
- type: 'category',
194
- label: 'S3 Category',
195
- },
196
- next: {
197
- type: 'category',
198
- label: 'S3 SubSubCategory',
199
- },
200
- } as SidebarNavigation);
201
-
202
- expect(
203
- getCategoryGeneratedIndexNavigation('/s3-subsubcategory-index-permalink'),
204
- ).toMatchObject({
205
- sidebarName: 'sidebar3',
206
- previous: {
207
- type: 'category',
208
- label: 'S3 SubCategory',
209
- },
210
- next: {
211
- type: 'doc',
212
- id: 'doc6',
213
- },
214
- } as SidebarNavigation);
215
- });
216
-
217
- test('getCategoryGeneratedIndexList', async () => {
218
- expect(getCategoryGeneratedIndexList()).toMatchObject([
219
- {
220
- type: 'category',
221
- label: 'S3 SubCategory',
222
- },
223
- {
224
- type: 'category',
225
- label: 'S3 SubSubCategory',
226
- },
227
- ]);
228
- });
229
- });
230
-
231
- describe('collectSidebarDocItems', () => {
232
- test('can collect docs', async () => {
233
- const sidebar: Sidebar = [
234
- {
235
- type: 'category',
236
- collapsed: false,
237
- collapsible: true,
238
- label: 'Category1',
239
- items: [
240
- {
241
- type: 'category',
242
- collapsed: false,
243
- collapsible: true,
244
- label: 'Subcategory 1',
245
- items: [{type: 'doc', id: 'doc1'}],
246
- },
247
- {
248
- type: 'category',
249
- collapsed: false,
250
- collapsible: true,
251
- label: 'Subcategory 2',
252
- items: [
253
- {type: 'doc', id: 'doc2'},
254
- {
255
- type: 'category',
256
- collapsed: false,
257
- collapsible: true,
258
- label: 'Sub sub category 1',
259
- items: [{type: 'doc', id: 'doc3'}],
260
- },
261
- ],
262
- },
263
- ],
264
- },
265
- {
266
- type: 'category',
267
- collapsed: false,
268
- collapsible: true,
269
- label: 'Category2',
270
- items: [
271
- {type: 'doc', id: 'doc4'},
272
- {type: 'doc', id: 'doc5'},
273
- ],
274
- },
275
- ];
276
-
277
- expect(collectSidebarDocItems(sidebar).map((doc) => doc.id)).toEqual([
278
- 'doc1',
279
- 'doc2',
280
- 'doc3',
281
- 'doc4',
282
- 'doc5',
283
- ]);
284
- });
285
- });
286
-
287
- describe('collectSidebarCategories', () => {
288
- test('can collect categories', async () => {
289
- const sidebar: Sidebar = [
290
- {
291
- type: 'category',
292
- collapsed: false,
293
- collapsible: true,
294
- label: 'Category1',
295
- items: [
296
- {
297
- type: 'category',
298
- collapsed: false,
299
- collapsible: true,
300
- label: 'Subcategory 1',
301
- items: [{type: 'doc', id: 'doc1'}],
302
- },
303
- {
304
- type: 'category',
305
- collapsed: false,
306
- collapsible: true,
307
- label: 'Subcategory 2',
308
- items: [
309
- {type: 'doc', id: 'doc2'},
310
- {
311
- type: 'category',
312
- collapsed: false,
313
- collapsible: true,
314
- label: 'Sub sub category 1',
315
- items: [{type: 'doc', id: 'doc3'}],
316
- },
317
- ],
318
- },
319
- ],
320
- },
321
- {
322
- type: 'category',
323
- collapsed: false,
324
- collapsible: true,
325
- label: 'Category2',
326
- items: [
327
- {type: 'doc', id: 'doc4'},
328
- {type: 'doc', id: 'doc5'},
329
- ],
330
- },
331
- ];
332
-
333
- expect(
334
- collectSidebarCategories(sidebar).map((category) => category.label),
335
- ).toEqual([
336
- 'Category1',
337
- 'Subcategory 1',
338
- 'Subcategory 2',
339
- 'Sub sub category 1',
340
- 'Category2',
341
- ]);
342
- });
343
- });
344
-
345
- describe('collectSidebarLinks', () => {
346
- test('can collect links', async () => {
347
- const sidebar: Sidebar = [
348
- {
349
- type: 'category',
350
- collapsed: false,
351
- collapsible: true,
352
- label: 'Category1',
353
- items: [
354
- {
355
- type: 'link',
356
- href: 'https://google.com',
357
- label: 'Google',
358
- },
359
- {
360
- type: 'category',
361
- collapsed: false,
362
- collapsible: true,
363
- label: 'Subcategory 2',
364
- items: [
365
- {
366
- type: 'link',
367
- href: 'https://facebook.com',
368
- label: 'Facebook',
369
- },
370
- ],
371
- },
372
- ],
373
- },
374
- ];
375
-
376
- expect(collectSidebarLinks(sidebar).map((link) => link.href)).toEqual([
377
- 'https://google.com',
378
- 'https://facebook.com',
379
- ]);
380
- });
381
- });
382
-
383
- describe('collectSidebarsDocIds', () => {
384
- test('can collect sidebars doc items', async () => {
385
- const sidebar1: Sidebar = [
386
- {
387
- type: 'category',
388
- collapsed: false,
389
- collapsible: true,
390
- label: 'Category1',
391
- items: [
392
- {
393
- type: 'category',
394
- collapsed: false,
395
- collapsible: true,
396
- label: 'Subcategory 1',
397
- items: [{type: 'doc', id: 'doc1'}],
398
- },
399
- {type: 'doc', id: 'doc2'},
400
- ],
401
- },
402
- ];
403
-
404
- const sidebar2: Sidebar = [
405
- {
406
- type: 'category',
407
- collapsed: false,
408
- collapsible: true,
409
- label: 'Category2',
410
- items: [
411
- {type: 'doc', id: 'doc3'},
412
- {type: 'doc', id: 'doc4'},
413
- ],
414
- },
415
- ];
416
-
417
- const sidebar3: Sidebar = [
418
- {type: 'doc', id: 'doc5'},
419
- {type: 'doc', id: 'doc6'},
420
- ];
421
- expect(collectSidebarsDocIds({sidebar1, sidebar2, sidebar3})).toEqual({
422
- sidebar1: ['doc1', 'doc2'],
423
- sidebar2: ['doc3', 'doc4'],
424
- sidebar3: ['doc5', 'doc6'],
425
- });
426
- });
427
- });
428
-
429
- describe('transformSidebarItems', () => {
430
- test('can transform sidebar items', async () => {
431
- const sidebar: Sidebar = [
432
- {
433
- type: 'category',
434
- collapsed: false,
435
- collapsible: true,
436
- label: 'Category1',
437
- items: [
438
- {
439
- type: 'category',
440
- collapsed: false,
441
- collapsible: true,
442
- label: 'Subcategory 1',
443
- items: [{type: 'doc', id: 'doc1'}],
444
- customProps: {fakeProp: false},
445
- },
446
- {
447
- type: 'category',
448
- collapsed: false,
449
- collapsible: true,
450
- label: 'Subcategory 2',
451
- items: [
452
- {type: 'doc', id: 'doc2'},
453
- {
454
- type: 'category',
455
- collapsed: false,
456
- collapsible: true,
457
- label: 'Sub sub category 1',
458
- items: [
459
- {type: 'doc', id: 'doc3', customProps: {lorem: 'ipsum'}},
460
- ],
461
- },
462
- ],
463
- },
464
- ],
465
- },
466
- {
467
- type: 'category',
468
- collapsed: false,
469
- collapsible: true,
470
- label: 'Category2',
471
- items: [
472
- {type: 'doc', id: 'doc4'},
473
- {type: 'doc', id: 'doc5'},
474
- ],
475
- },
476
- ];
477
-
478
- expect(
479
- transformSidebarItems(sidebar, (item) => {
480
- if (item.type === 'category') {
481
- return {...item, label: `MODIFIED LABEL: ${item.label}`};
482
- }
483
- return item;
484
- }),
485
- ).toEqual([
486
- {
487
- type: 'category',
488
- collapsed: false,
489
- collapsible: true,
490
- label: 'MODIFIED LABEL: Category1',
491
- items: [
492
- {
493
- type: 'category',
494
- collapsed: false,
495
- collapsible: true,
496
- label: 'MODIFIED LABEL: Subcategory 1',
497
- items: [{type: 'doc', id: 'doc1'}],
498
- customProps: {fakeProp: false},
499
- },
500
- {
501
- type: 'category',
502
- collapsed: false,
503
- collapsible: true,
504
- label: 'MODIFIED LABEL: Subcategory 2',
505
- items: [
506
- {type: 'doc', id: 'doc2'},
507
- {
508
- type: 'category',
509
- collapsed: false,
510
- collapsible: true,
511
- label: 'MODIFIED LABEL: Sub sub category 1',
512
- items: [
513
- {type: 'doc', id: 'doc3', customProps: {lorem: 'ipsum'}},
514
- ],
515
- },
516
- ],
517
- },
518
- ],
519
- },
520
- {
521
- type: 'category',
522
- collapsed: false,
523
- collapsible: true,
524
- label: 'MODIFIED LABEL: Category2',
525
- items: [
526
- {type: 'doc', id: 'doc4'},
527
- {type: 'doc', id: 'doc5'},
528
- ],
529
- },
530
- ]);
531
- });
532
- });
533
-
534
- describe('toDocNavigationLink', () => {
535
- type TestDoc = Pick<DocMetadataBase, 'permalink' | 'title' | 'frontMatter'>;
536
- function testDoc(data: TestDoc) {
537
- return data as DocMetadataBase;
538
- }
539
-
540
- test('with no frontmatter', () => {
541
- expect(
542
- toDocNavigationLink(
543
- testDoc({
544
- title: 'Doc Title',
545
- permalink: '/docPermalink',
546
- frontMatter: {},
547
- }),
548
- ),
549
- ).toEqual({
550
- title: 'Doc Title',
551
- permalink: '/docPermalink',
552
- } as DocNavLink);
553
- });
554
-
555
- test('with pagination_label frontmatter', () => {
556
- expect(
557
- toDocNavigationLink(
558
- testDoc({
559
- title: 'Doc Title',
560
- permalink: '/docPermalink',
561
- frontMatter: {
562
- pagination_label: 'pagination_label',
563
- },
564
- }),
565
- ),
566
- ).toEqual({
567
- title: 'pagination_label',
568
- permalink: '/docPermalink',
569
- } as DocNavLink);
570
- });
571
-
572
- test('with sidebar_label frontmatter', () => {
573
- expect(
574
- toDocNavigationLink(
575
- testDoc({
576
- title: 'Doc Title',
577
- permalink: '/docPermalink',
578
- frontMatter: {
579
- sidebar_label: 'sidebar_label',
580
- },
581
- }),
582
- ),
583
- ).toEqual({
584
- title: 'sidebar_label',
585
- permalink: '/docPermalink',
586
- } as DocNavLink);
587
- });
588
-
589
- test('with pagination_label + sidebar_label frontmatter', () => {
590
- expect(
591
- toDocNavigationLink(
592
- testDoc({
593
- title: 'Doc Title',
594
- permalink: '/docPermalink',
595
- frontMatter: {
596
- pagination_label: 'pagination_label',
597
- sidebar_label: 'sidebar_label',
598
- },
599
- }),
600
- ),
601
- ).toEqual({
602
- title: 'pagination_label',
603
- permalink: '/docPermalink',
604
- } as DocNavLink);
605
- });
606
- });
607
-
608
- describe('toNavigationLink', () => {
609
- type TestDoc = Pick<DocMetadataBase, 'permalink' | 'title'>;
610
- function testDoc(data: TestDoc) {
611
- return {...data, frontMatter: {}} as DocMetadataBase;
612
- }
613
-
614
- const docsById: Record<string, DocMetadataBase> = {
615
- doc1: testDoc({
616
- title: 'Doc 1',
617
- permalink: '/doc1',
618
- }),
619
- doc2: testDoc({
620
- title: 'Doc 1',
621
- permalink: '/doc1',
622
- }),
623
- };
624
-
625
- test('with doc items', () => {
626
- expect(toNavigationLink({type: 'doc', id: 'doc1'}, docsById)).toEqual(
627
- toDocNavigationLink(docsById.doc1),
628
- );
629
- expect(toNavigationLink({type: 'doc', id: 'doc2'}, docsById)).toEqual(
630
- toDocNavigationLink(docsById.doc2),
631
- );
632
- expect(() =>
633
- toNavigationLink({type: 'doc', id: 'doc3'}, docsById),
634
- ).toThrowErrorMatchingInlineSnapshot(
635
- `"Can't create navigation link: no doc found with id=doc3"`,
636
- );
637
- });
638
-
639
- test('with category item and doc link', () => {
640
- expect(
641
- toNavigationLink(
642
- {
643
- type: 'category',
644
- label: 'Category',
645
- items: [],
646
- link: {
647
- type: 'doc',
648
- id: 'doc1',
649
- },
650
- collapsed: true,
651
- collapsible: true,
652
- },
653
- docsById,
654
- ),
655
- ).toEqual(toDocNavigationLink(docsById.doc1));
656
- expect(() =>
657
- toNavigationLink(
658
- {
659
- type: 'category',
660
- label: 'Category',
661
- items: [],
662
- link: {
663
- type: 'doc',
664
- id: 'doc3',
665
- },
666
- collapsed: true,
667
- collapsible: true,
668
- },
669
- docsById,
670
- ),
671
- ).toThrowErrorMatchingInlineSnapshot(
672
- `"Can't create navigation link: no doc found with id=doc3"`,
673
- );
674
- });
675
-
676
- test('with category item and generated-index link', () => {
677
- expect(
678
- toNavigationLink(
679
- {
680
- type: 'category',
681
- label: 'Category',
682
- items: [],
683
- link: {
684
- type: 'generated-index',
685
- slug: 'slug',
686
- permalink: 'generated-index-permalink',
687
- },
688
- collapsed: true,
689
- collapsible: true,
690
- },
691
- docsById,
692
- ),
693
- ).toEqual({title: 'Category', permalink: 'generated-index-permalink'});
694
- });
695
- });