@docusaurus/plugin-content-docs 2.0.0-beta.1decd6f80 → 2.0.0-beta.20

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 (230) hide show
  1. package/lib/categoryGeneratedIndex.d.ts +12 -0
  2. package/lib/categoryGeneratedIndex.js +37 -0
  3. package/lib/cli.d.ts +3 -2
  4. package/lib/cli.js +65 -69
  5. package/lib/client/docsClientUtils.d.ts +9 -28
  6. package/lib/client/docsClientUtils.js +34 -42
  7. package/lib/client/index.d.ts +22 -0
  8. package/lib/client/index.js +72 -0
  9. package/lib/constants.d.ts +4 -0
  10. package/lib/constants.js +4 -1
  11. package/lib/docs.d.ts +33 -4
  12. package/lib/docs.js +173 -62
  13. package/{src/__tests__/__fixtures__/site-with-doc-label/docusaurus.config.js → lib/frontMatter.d.ts} +4 -8
  14. package/lib/{docFrontMatter.js → frontMatter.js} +16 -6
  15. package/lib/globalData.d.ts +3 -3
  16. package/lib/globalData.js +35 -6
  17. package/lib/index.d.ts +3 -3
  18. package/lib/index.js +135 -140
  19. package/lib/lastUpdate.d.ts +4 -6
  20. package/lib/lastUpdate.js +22 -26
  21. package/lib/markdown/index.d.ts +3 -6
  22. package/lib/markdown/index.js +3 -3
  23. package/lib/markdown/linkify.d.ts +1 -1
  24. package/lib/markdown/linkify.js +7 -4
  25. package/lib/numberPrefix.d.ts +1 -1
  26. package/lib/numberPrefix.js +16 -21
  27. package/lib/options.d.ts +3 -5
  28. package/lib/options.js +55 -19
  29. package/lib/props.d.ts +7 -2
  30. package/lib/props.js +72 -15
  31. package/lib/routes.d.ts +29 -0
  32. package/lib/routes.js +96 -0
  33. package/lib/server-export.d.ts +9 -0
  34. package/lib/server-export.js +22 -0
  35. package/lib/{sidebarItemsGenerator.d.ts → sidebars/generator.d.ts} +1 -6
  36. package/lib/sidebars/generator.js +209 -0
  37. package/lib/sidebars/index.d.ts +13 -0
  38. package/lib/sidebars/index.js +92 -0
  39. package/lib/sidebars/normalization.d.ts +13 -0
  40. package/lib/sidebars/normalization.js +55 -0
  41. package/lib/sidebars/postProcessor.d.ts +8 -0
  42. package/lib/sidebars/postProcessor.js +65 -0
  43. package/lib/sidebars/processor.d.ts +10 -0
  44. package/lib/sidebars/processor.js +90 -0
  45. package/lib/sidebars/types.d.ts +178 -0
  46. package/{src/__tests__/__fixtures__/site-with-autogenerated-sidebar/partialAutogeneratedSidebars2.js → lib/sidebars/types.js} +2 -10
  47. package/lib/sidebars/utils.d.ts +54 -0
  48. package/lib/sidebars/utils.js +255 -0
  49. package/lib/sidebars/validation.d.ts +11 -0
  50. package/lib/sidebars/validation.js +138 -0
  51. package/lib/slug.d.ts +5 -4
  52. package/lib/slug.js +29 -19
  53. package/{src/__tests__/__fixtures__/sidebars/sidebars-first-level-not-category.js → lib/tags.d.ts} +3 -14
  54. package/lib/tags.js +21 -0
  55. package/lib/translations.d.ts +3 -3
  56. package/lib/translations.js +84 -94
  57. package/lib/types.d.ts +13 -171
  58. package/lib/versions/files.d.ts +44 -0
  59. package/lib/versions/files.js +142 -0
  60. package/lib/versions/index.d.ts +36 -0
  61. package/lib/versions/index.js +155 -0
  62. package/lib/versions/validation.d.ts +17 -0
  63. package/lib/versions/validation.js +71 -0
  64. package/package.json +32 -26
  65. package/src/categoryGeneratedIndex.ts +60 -0
  66. package/src/cli.ts +90 -109
  67. package/src/client/docsClientUtils.ts +47 -84
  68. package/src/client/index.ts +103 -0
  69. package/src/constants.ts +4 -2
  70. package/{types.d.ts → src/deps.d.ts} +1 -1
  71. package/src/docs.ts +244 -63
  72. package/src/frontMatter.ts +51 -0
  73. package/src/globalData.ts +57 -7
  74. package/src/index.ts +186 -190
  75. package/src/lastUpdate.ts +26 -33
  76. package/src/markdown/index.ts +10 -16
  77. package/src/markdown/linkify.ts +8 -5
  78. package/src/numberPrefix.ts +19 -26
  79. package/src/options.ts +60 -32
  80. package/src/plugin-content-docs.d.ts +632 -75
  81. package/src/props.ts +109 -22
  82. package/src/routes.ts +159 -0
  83. package/src/server-export.ts +22 -0
  84. package/src/sidebars/README.md +9 -0
  85. package/src/sidebars/generator.ts +292 -0
  86. package/src/sidebars/index.ts +118 -0
  87. package/src/sidebars/normalization.ts +85 -0
  88. package/src/sidebars/postProcessor.ts +89 -0
  89. package/src/sidebars/processor.ts +139 -0
  90. package/src/sidebars/types.ts +275 -0
  91. package/src/sidebars/utils.ts +391 -0
  92. package/src/sidebars/validation.ts +174 -0
  93. package/src/slug.ts +42 -23
  94. package/src/tags.ts +20 -0
  95. package/src/translations.ts +124 -117
  96. package/src/types.ts +18 -231
  97. package/src/versions/files.ts +220 -0
  98. package/src/versions/index.ts +247 -0
  99. package/src/versions/validation.ts +113 -0
  100. package/lib/.tsbuildinfo +0 -4673
  101. package/lib/docFrontMatter.d.ts +0 -21
  102. package/lib/sidebarItemsGenerator.js +0 -211
  103. package/lib/sidebars.d.ts +0 -42
  104. package/lib/sidebars.js +0 -309
  105. package/lib/theme/hooks/useDocs.d.ts +0 -20
  106. package/lib/theme/hooks/useDocs.js +0 -72
  107. package/lib/versions.d.ts +0 -16
  108. package/lib/versions.js +0 -287
  109. package/src/__tests__/__fixtures__/bad-id-site/docs/invalid-id.md +0 -5
  110. package/src/__tests__/__fixtures__/bad-slug-on-doc-home-site/docs/docWithSlug.md +0 -5
  111. package/src/__tests__/__fixtures__/empty-site/docusaurus.config.js +0 -16
  112. package/src/__tests__/__fixtures__/empty-site/sidebars.json +0 -1
  113. package/src/__tests__/__fixtures__/sidebars/sidebars-category-shorthand.js +0 -34
  114. package/src/__tests__/__fixtures__/sidebars/sidebars-category-wrong-items.json +0 -11
  115. package/src/__tests__/__fixtures__/sidebars/sidebars-category-wrong-label.json +0 -11
  116. package/src/__tests__/__fixtures__/sidebars/sidebars-category.js +0 -44
  117. package/src/__tests__/__fixtures__/sidebars/sidebars-collapsed-first-level.json +0 -20
  118. package/src/__tests__/__fixtures__/sidebars/sidebars-collapsed.json +0 -21
  119. package/src/__tests__/__fixtures__/sidebars/sidebars-doc-id-not-string.json +0 -10
  120. package/src/__tests__/__fixtures__/sidebars/sidebars-link-wrong-href.json +0 -11
  121. package/src/__tests__/__fixtures__/sidebars/sidebars-link-wrong-label.json +0 -11
  122. package/src/__tests__/__fixtures__/sidebars/sidebars-link.json +0 -11
  123. package/src/__tests__/__fixtures__/sidebars/sidebars-unknown-type.json +0 -14
  124. package/src/__tests__/__fixtures__/sidebars/sidebars-wrong-field.json +0 -20
  125. package/src/__tests__/__fixtures__/sidebars/sidebars.json +0 -20
  126. package/src/__tests__/__fixtures__/simple-site/docs/foo/bar.md +0 -69
  127. package/src/__tests__/__fixtures__/simple-site/docs/foo/baz.md +0 -67
  128. package/src/__tests__/__fixtures__/simple-site/docs/headingAsTitle.md +0 -1
  129. package/src/__tests__/__fixtures__/simple-site/docs/hello.md +0 -52
  130. package/src/__tests__/__fixtures__/simple-site/docs/ipsum.md +0 -5
  131. package/src/__tests__/__fixtures__/simple-site/docs/lorem.md +0 -6
  132. package/src/__tests__/__fixtures__/simple-site/docs/rootAbsoluteSlug.md +0 -5
  133. package/src/__tests__/__fixtures__/simple-site/docs/rootRelativeSlug.md +0 -5
  134. package/src/__tests__/__fixtures__/simple-site/docs/rootResolvedSlug.md +0 -5
  135. package/src/__tests__/__fixtures__/simple-site/docs/rootTryToEscapeSlug.md +0 -5
  136. package/src/__tests__/__fixtures__/simple-site/docs/slugs/absoluteSlug.md +0 -5
  137. package/src/__tests__/__fixtures__/simple-site/docs/slugs/relativeSlug.md +0 -5
  138. package/src/__tests__/__fixtures__/simple-site/docs/slugs/resolvedSlug.md +0 -5
  139. package/src/__tests__/__fixtures__/simple-site/docs/slugs/tryToEscapeSlug.md +0 -5
  140. package/src/__tests__/__fixtures__/simple-site/docusaurus.config.js +0 -14
  141. package/src/__tests__/__fixtures__/simple-site/sidebars.json +0 -23
  142. package/src/__tests__/__fixtures__/simple-site/wrong-sidebars.json +0 -7
  143. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/0-getting-started.md +0 -3
  144. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/1-installation.md +0 -3
  145. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/00_api-overview.md +0 -3
  146. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/01_Core APIs/0 --- Client API.md +0 -1
  147. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/01_Core APIs/1 --- Server API.md +0 -1
  148. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/02_Extension APIs/0. Plugin API.md +0 -1
  149. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/02_Extension APIs/1. Theme API.md +0 -1
  150. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/02_Extension APIs/_category_.yml +0 -1
  151. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/03_api-end.md +0 -3
  152. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/3-API/_category_.json +0 -3
  153. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/0-guide2.5.md +0 -8
  154. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/02-guide2.md +0 -7
  155. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/_category_.json +0 -3
  156. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/a-guide4.md +0 -7
  157. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/b-guide5.md +0 -7
  158. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/guide3.md +0 -8
  159. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docs/Guides/z-guide1.md +0 -8
  160. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/docusaurus.config.js +0 -14
  161. package/src/__tests__/__fixtures__/site-with-autogenerated-sidebar/partialAutogeneratedSidebars.js +0 -23
  162. package/src/__tests__/__fixtures__/site-with-doc-label/docs/hello-1.md +0 -7
  163. package/src/__tests__/__fixtures__/site-with-doc-label/docs/hello-2.md +0 -8
  164. package/src/__tests__/__fixtures__/site-with-doc-label/sidebars.json +0 -14
  165. package/src/__tests__/__fixtures__/versioned-site/community/team.md +0 -1
  166. package/src/__tests__/__fixtures__/versioned-site/community_sidebars.json +0 -3
  167. package/src/__tests__/__fixtures__/versioned-site/community_versioned_docs/version-1.0.0/team.md +0 -1
  168. package/src/__tests__/__fixtures__/versioned-site/community_versioned_sidebars/version-1.0.0-sidebars.json +0 -3
  169. package/src/__tests__/__fixtures__/versioned-site/community_versions.json +0 -1
  170. package/src/__tests__/__fixtures__/versioned-site/docs/foo/bar.md +0 -4
  171. package/src/__tests__/__fixtures__/versioned-site/docs/hello.md +0 -1
  172. package/src/__tests__/__fixtures__/versioned-site/docs/slugs/absoluteSlug.md +0 -5
  173. package/src/__tests__/__fixtures__/versioned-site/docs/slugs/relativeSlug.md +0 -5
  174. package/src/__tests__/__fixtures__/versioned-site/docs/slugs/resolvedSlug.md +0 -5
  175. package/src/__tests__/__fixtures__/versioned-site/docs/slugs/tryToEscapeSlug.md +0 -5
  176. package/src/__tests__/__fixtures__/versioned-site/docusaurus.config.js +0 -18
  177. package/src/__tests__/__fixtures__/versioned-site/i18n/en/docusaurus-plugin-content-docs/version-1.0.0/hello.md +0 -1
  178. package/src/__tests__/__fixtures__/versioned-site/i18n/en/docusaurus-plugin-content-docs-community/current/team.md +0 -5
  179. package/src/__tests__/__fixtures__/versioned-site/i18n/fr/docusaurus-plugin-content-docs/version-1.0.0/hello.md +0 -1
  180. package/src/__tests__/__fixtures__/versioned-site/sidebars.json +0 -10
  181. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.0/foo/bar.md +0 -4
  182. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.0/foo/baz.md +0 -1
  183. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.0/hello.md +0 -1
  184. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.1/foo/bar.md +0 -1
  185. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.1/hello.md +0 -1
  186. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/rootAbsoluteSlug.md +0 -5
  187. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/rootRelativeSlug.md +0 -5
  188. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/rootResolvedSlug.md +0 -5
  189. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/rootTryToEscapeSlug.md +0 -5
  190. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/slugs/absoluteSlug.md +0 -5
  191. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/slugs/relativeSlug.md +0 -5
  192. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/slugs/resolvedSlug.md +0 -5
  193. package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-withSlugs/slugs/tryToEscapeSlug.md +0 -5
  194. package/src/__tests__/__fixtures__/versioned-site/versioned_sidebars/version-1.0.0-sidebars.json +0 -11
  195. package/src/__tests__/__fixtures__/versioned-site/versioned_sidebars/version-1.0.1-sidebars.json +0 -10
  196. package/src/__tests__/__fixtures__/versioned-site/versioned_sidebars/version-withSlugs-sidebars.json +0 -5
  197. package/src/__tests__/__fixtures__/versioned-site/versions.json +0 -5
  198. package/src/__tests__/__snapshots__/cli.test.ts.snap +0 -90
  199. package/src/__tests__/__snapshots__/index.test.ts.snap +0 -1907
  200. package/src/__tests__/__snapshots__/sidebars.test.ts.snap +0 -218
  201. package/src/__tests__/__snapshots__/translations.test.ts.snap +0 -487
  202. package/src/__tests__/cli.test.ts +0 -333
  203. package/src/__tests__/docFrontMatter.test.ts +0 -204
  204. package/src/__tests__/docs.test.ts +0 -875
  205. package/src/__tests__/index.test.ts +0 -1831
  206. package/src/__tests__/lastUpdate.test.ts +0 -68
  207. package/src/__tests__/numberPrefix.test.ts +0 -199
  208. package/src/__tests__/options.test.ts +0 -232
  209. package/src/__tests__/sidebarItemsGenerator.test.ts +0 -336
  210. package/src/__tests__/sidebars.test.ts +0 -638
  211. package/src/__tests__/slug.test.ts +0 -109
  212. package/src/__tests__/translations.test.ts +0 -159
  213. package/src/__tests__/versions.test.ts +0 -718
  214. package/src/client/__tests__/docsClientUtils.test.ts +0 -372
  215. package/src/docFrontMatter.ts +0 -53
  216. package/src/markdown/__tests__/__fixtures__/docs/doc-localized.md +0 -1
  217. package/src/markdown/__tests__/__fixtures__/docs/doc1.md +0 -13
  218. package/src/markdown/__tests__/__fixtures__/docs/doc2.md +0 -12
  219. package/src/markdown/__tests__/__fixtures__/docs/doc4.md +0 -19
  220. package/src/markdown/__tests__/__fixtures__/docs/doc5.md +0 -6
  221. package/src/markdown/__tests__/__fixtures__/docs/subdir/doc3.md +0 -3
  222. package/src/markdown/__tests__/__fixtures__/versioned_docs/version-1.0.0/doc2.md +0 -7
  223. package/src/markdown/__tests__/__fixtures__/versioned_docs/version-1.0.0/subdir/doc1.md +0 -3
  224. package/src/markdown/__tests__/__snapshots__/linkify.test.ts.snap +0 -82
  225. package/src/markdown/__tests__/linkify.test.ts +0 -190
  226. package/src/sidebarItemsGenerator.ts +0 -307
  227. package/src/sidebars.ts +0 -489
  228. package/src/theme/hooks/useDocs.ts +0 -99
  229. package/src/versions.ts +0 -511
  230. package/tsconfig.json +0 -9
@@ -1,333 +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 {cliDocsVersionCommand} from '../cli';
10
- import {PathOptions} from '../types';
11
- import fs from 'fs-extra';
12
- import {
13
- getVersionedDocsDirPath,
14
- getVersionsFilePath,
15
- getVersionedSidebarsDirPath,
16
- } from '../versions';
17
- import {DEFAULT_PLUGIN_ID} from '@docusaurus/core/lib/constants';
18
-
19
- const fixtureDir = path.join(__dirname, '__fixtures__');
20
-
21
- describe('docsVersion', () => {
22
- const simpleSiteDir = path.join(fixtureDir, 'simple-site');
23
- const versionedSiteDir = path.join(fixtureDir, 'versioned-site');
24
- const DEFAULT_OPTIONS: PathOptions = {
25
- path: 'docs',
26
- sidebarPath: '',
27
- };
28
-
29
- test('no version tag provided', () => {
30
- expect(() =>
31
- cliDocsVersionCommand(
32
- null,
33
- simpleSiteDir,
34
- DEFAULT_PLUGIN_ID,
35
- DEFAULT_OPTIONS,
36
- ),
37
- ).toThrowErrorMatchingInlineSnapshot(
38
- `"[docs] No version tag specified!. Pass the version you wish to create as an argument. Ex: 1.0.0"`,
39
- );
40
- expect(() =>
41
- cliDocsVersionCommand(
42
- undefined,
43
- simpleSiteDir,
44
- DEFAULT_PLUGIN_ID,
45
- DEFAULT_OPTIONS,
46
- ),
47
- ).toThrowErrorMatchingInlineSnapshot(
48
- `"[docs] No version tag specified!. Pass the version you wish to create as an argument. Ex: 1.0.0"`,
49
- );
50
- expect(() =>
51
- cliDocsVersionCommand(
52
- '',
53
- simpleSiteDir,
54
- DEFAULT_PLUGIN_ID,
55
- DEFAULT_OPTIONS,
56
- ),
57
- ).toThrowErrorMatchingInlineSnapshot(
58
- `"[docs] No version tag specified!. Pass the version you wish to create as an argument. Ex: 1.0.0"`,
59
- );
60
- });
61
-
62
- test('version tag should not have slash', () => {
63
- expect(() =>
64
- cliDocsVersionCommand(
65
- 'foo/bar',
66
- simpleSiteDir,
67
- DEFAULT_PLUGIN_ID,
68
- DEFAULT_OPTIONS,
69
- ),
70
- ).toThrowErrorMatchingInlineSnapshot(
71
- `"[docs] Invalid version tag specified! Do not include slash (/) or (\\\\). Try something like: 1.0.0"`,
72
- );
73
- expect(() =>
74
- cliDocsVersionCommand(
75
- 'foo\\bar',
76
- simpleSiteDir,
77
- DEFAULT_PLUGIN_ID,
78
- DEFAULT_OPTIONS,
79
- ),
80
- ).toThrowErrorMatchingInlineSnapshot(
81
- `"[docs] Invalid version tag specified! Do not include slash (/) or (\\\\). Try something like: 1.0.0"`,
82
- );
83
- });
84
-
85
- test('version tag should not be too long', () => {
86
- expect(() =>
87
- cliDocsVersionCommand(
88
- 'a'.repeat(255),
89
- simpleSiteDir,
90
- DEFAULT_PLUGIN_ID,
91
- DEFAULT_OPTIONS,
92
- ),
93
- ).toThrowErrorMatchingInlineSnapshot(
94
- `"[docs] Invalid version tag specified! Length must <= 32 characters. Try something like: 1.0.0"`,
95
- );
96
- });
97
-
98
- test('version tag should not be a dot or two dots', () => {
99
- expect(() =>
100
- cliDocsVersionCommand(
101
- '..',
102
- simpleSiteDir,
103
- DEFAULT_PLUGIN_ID,
104
- DEFAULT_OPTIONS,
105
- ),
106
- ).toThrowErrorMatchingInlineSnapshot(
107
- `"[docs] Invalid version tag specified! Do not name your version \\".\\" or \\"..\\". Try something like: 1.0.0"`,
108
- );
109
- expect(() =>
110
- cliDocsVersionCommand(
111
- '.',
112
- simpleSiteDir,
113
- DEFAULT_PLUGIN_ID,
114
- DEFAULT_OPTIONS,
115
- ),
116
- ).toThrowErrorMatchingInlineSnapshot(
117
- `"[docs] Invalid version tag specified! Do not name your version \\".\\" or \\"..\\". Try something like: 1.0.0"`,
118
- );
119
- });
120
-
121
- test('version tag should be a valid pathname', () => {
122
- expect(() =>
123
- cliDocsVersionCommand(
124
- '<foo|bar>',
125
- simpleSiteDir,
126
- DEFAULT_PLUGIN_ID,
127
- DEFAULT_OPTIONS,
128
- ),
129
- ).toThrowErrorMatchingInlineSnapshot(
130
- `"[docs] Invalid version tag specified! Please ensure its a valid pathname too. Try something like: 1.0.0"`,
131
- );
132
- expect(() =>
133
- cliDocsVersionCommand(
134
- 'foo\x00bar',
135
- simpleSiteDir,
136
- DEFAULT_PLUGIN_ID,
137
- DEFAULT_OPTIONS,
138
- ),
139
- ).toThrowErrorMatchingInlineSnapshot(
140
- `"[docs] Invalid version tag specified! Please ensure its a valid pathname too. Try something like: 1.0.0"`,
141
- );
142
- expect(() =>
143
- cliDocsVersionCommand(
144
- 'foo:bar',
145
- simpleSiteDir,
146
- DEFAULT_PLUGIN_ID,
147
- DEFAULT_OPTIONS,
148
- ),
149
- ).toThrowErrorMatchingInlineSnapshot(
150
- `"[docs] Invalid version tag specified! Please ensure its a valid pathname too. Try something like: 1.0.0"`,
151
- );
152
- });
153
-
154
- test('version tag already exist', () => {
155
- expect(() =>
156
- cliDocsVersionCommand(
157
- '1.0.0',
158
- versionedSiteDir,
159
- DEFAULT_PLUGIN_ID,
160
- DEFAULT_OPTIONS,
161
- ),
162
- ).toThrowErrorMatchingInlineSnapshot(
163
- `"[docs] This version already exists!. Use a version tag that does not already exist."`,
164
- );
165
- });
166
-
167
- test('no docs file to version', () => {
168
- const emptySiteDir = path.join(fixtureDir, 'empty-site');
169
- expect(() =>
170
- cliDocsVersionCommand(
171
- '1.0.0',
172
- emptySiteDir,
173
- DEFAULT_PLUGIN_ID,
174
- DEFAULT_OPTIONS,
175
- ),
176
- ).toThrowErrorMatchingInlineSnapshot(
177
- `"[docs] There is no docs to version !"`,
178
- );
179
- });
180
-
181
- test('first time versioning', () => {
182
- const copyMock = jest.spyOn(fs, 'copySync').mockImplementation();
183
- const ensureMock = jest.spyOn(fs, 'ensureDirSync').mockImplementation();
184
- const writeMock = jest.spyOn(fs, 'writeFileSync');
185
- let versionedSidebar;
186
- let versionedSidebarPath;
187
- writeMock.mockImplementationOnce((filepath, content) => {
188
- versionedSidebarPath = filepath;
189
- versionedSidebar = JSON.parse(content);
190
- });
191
- let versionsPath;
192
- let versions;
193
- writeMock.mockImplementationOnce((filepath, content) => {
194
- versionsPath = filepath;
195
- versions = JSON.parse(content);
196
- });
197
- const consoleMock = jest.spyOn(console, 'log').mockImplementation();
198
- const options = {
199
- path: 'docs',
200
- sidebarPath: path.join(simpleSiteDir, 'sidebars.json'),
201
- };
202
- cliDocsVersionCommand('1.0.0', simpleSiteDir, DEFAULT_PLUGIN_ID, options);
203
- expect(copyMock).toHaveBeenCalledWith(
204
- path.join(simpleSiteDir, options.path),
205
- path.join(
206
- getVersionedDocsDirPath(simpleSiteDir, DEFAULT_PLUGIN_ID),
207
- 'version-1.0.0',
208
- ),
209
- );
210
- expect(versionedSidebar).toMatchSnapshot();
211
- expect(versionedSidebarPath).toEqual(
212
- path.join(
213
- getVersionedSidebarsDirPath(simpleSiteDir, DEFAULT_PLUGIN_ID),
214
- 'version-1.0.0-sidebars.json',
215
- ),
216
- );
217
- expect(versionsPath).toEqual(
218
- getVersionsFilePath(simpleSiteDir, DEFAULT_PLUGIN_ID),
219
- );
220
- expect(versions).toEqual(['1.0.0']);
221
- expect(consoleMock).toHaveBeenCalledWith('[docs] Version 1.0.0 created!');
222
-
223
- copyMock.mockRestore();
224
- writeMock.mockRestore();
225
- consoleMock.mockRestore();
226
- ensureMock.mockRestore();
227
- });
228
-
229
- test('not the first time versioning', () => {
230
- const copyMock = jest.spyOn(fs, 'copySync').mockImplementation();
231
- const ensureMock = jest.spyOn(fs, 'ensureDirSync').mockImplementation();
232
- const writeMock = jest.spyOn(fs, 'writeFileSync');
233
- let versionedSidebar;
234
- let versionedSidebarPath;
235
- writeMock.mockImplementationOnce((filepath, content) => {
236
- versionedSidebarPath = filepath;
237
- versionedSidebar = JSON.parse(content);
238
- });
239
- let versionsPath;
240
- let versions;
241
- writeMock.mockImplementationOnce((filepath, content) => {
242
- versionsPath = filepath;
243
- versions = JSON.parse(content);
244
- });
245
- const consoleMock = jest.spyOn(console, 'log').mockImplementation();
246
- const options = {
247
- path: 'docs',
248
- sidebarPath: path.join(versionedSiteDir, 'sidebars.json'),
249
- };
250
- cliDocsVersionCommand(
251
- '2.0.0',
252
- versionedSiteDir,
253
- DEFAULT_PLUGIN_ID,
254
- options,
255
- );
256
- expect(copyMock).toHaveBeenCalledWith(
257
- path.join(versionedSiteDir, options.path),
258
- path.join(
259
- getVersionedDocsDirPath(versionedSiteDir, DEFAULT_PLUGIN_ID),
260
- 'version-2.0.0',
261
- ),
262
- );
263
- expect(versionedSidebar).toMatchSnapshot();
264
- expect(versionedSidebarPath).toEqual(
265
- path.join(
266
- getVersionedSidebarsDirPath(versionedSiteDir, DEFAULT_PLUGIN_ID),
267
- 'version-2.0.0-sidebars.json',
268
- ),
269
- );
270
- expect(versionsPath).toEqual(
271
- getVersionsFilePath(versionedSiteDir, DEFAULT_PLUGIN_ID),
272
- );
273
- expect(versions).toEqual(['2.0.0', '1.0.1', '1.0.0', 'withSlugs']);
274
- expect(consoleMock).toHaveBeenCalledWith('[docs] Version 2.0.0 created!');
275
-
276
- copyMock.mockRestore();
277
- writeMock.mockRestore();
278
- consoleMock.mockRestore();
279
- ensureMock.mockRestore();
280
- });
281
-
282
- test('second docs instance versioning', () => {
283
- const pluginId = 'community';
284
-
285
- const copyMock = jest.spyOn(fs, 'copySync').mockImplementation();
286
- const ensureMock = jest.spyOn(fs, 'ensureDirSync').mockImplementation();
287
- const writeMock = jest.spyOn(fs, 'writeFileSync');
288
- let versionedSidebar;
289
- let versionedSidebarPath;
290
- writeMock.mockImplementationOnce((filepath, content) => {
291
- versionedSidebarPath = filepath;
292
- versionedSidebar = JSON.parse(content);
293
- });
294
- let versionsPath;
295
- let versions;
296
- writeMock.mockImplementationOnce((filepath, content) => {
297
- versionsPath = filepath;
298
- versions = JSON.parse(content);
299
- });
300
- const consoleMock = jest.spyOn(console, 'log').mockImplementation();
301
- const options = {
302
- path: 'community',
303
- sidebarPath: path.join(versionedSiteDir, 'community_sidebars.json'),
304
- };
305
- cliDocsVersionCommand('2.0.0', versionedSiteDir, pluginId, options);
306
- expect(copyMock).toHaveBeenCalledWith(
307
- path.join(versionedSiteDir, options.path),
308
- path.join(
309
- getVersionedDocsDirPath(versionedSiteDir, pluginId),
310
- 'version-2.0.0',
311
- ),
312
- );
313
- expect(versionedSidebar).toMatchSnapshot();
314
- expect(versionedSidebarPath).toEqual(
315
- path.join(
316
- getVersionedSidebarsDirPath(versionedSiteDir, pluginId),
317
- 'version-2.0.0-sidebars.json',
318
- ),
319
- );
320
- expect(versionsPath).toEqual(
321
- getVersionsFilePath(versionedSiteDir, pluginId),
322
- );
323
- expect(versions).toEqual(['2.0.0', '1.0.0']);
324
- expect(consoleMock).toHaveBeenCalledWith(
325
- '[community] Version 2.0.0 created!',
326
- );
327
-
328
- copyMock.mockRestore();
329
- writeMock.mockRestore();
330
- consoleMock.mockRestore();
331
- ensureMock.mockRestore();
332
- });
333
- });
@@ -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 {DocFrontMatter, validateDocFrontMatter} from '../docFrontMatter';
9
-
10
- function testField(params: {
11
- fieldName: keyof DocFrontMatter;
12
- validFrontMatters: DocFrontMatter[];
13
- convertibleFrontMatter?: [
14
- ConvertableFrontMatter: Record<string, unknown>,
15
- ConvertedFrontMatter: DocFrontMatter,
16
- ][];
17
- invalidFrontMatters?: [
18
- InvalidFrontMatter: Record<string, unknown>,
19
- ErrorMessage: string,
20
- ][];
21
- }) {
22
- describe(`"${params.fieldName}" field`, () => {
23
- test('accept valid values', () => {
24
- params.validFrontMatters.forEach((frontMatter) => {
25
- expect(validateDocFrontMatter(frontMatter)).toEqual(frontMatter);
26
- });
27
- });
28
-
29
- test('convert valid values', () => {
30
- params.convertibleFrontMatter?.forEach(
31
- ([convertibleFrontMatter, convertedFrontMatter]) => {
32
- expect(validateDocFrontMatter(convertibleFrontMatter)).toEqual(
33
- convertedFrontMatter,
34
- );
35
- },
36
- );
37
- });
38
-
39
- test('throw error for values', () => {
40
- params.invalidFrontMatters?.forEach(([frontMatter, message]) => {
41
- expect(() => validateDocFrontMatter(frontMatter)).toThrow(message);
42
- });
43
- });
44
- });
45
- }
46
-
47
- describe('validateDocFrontMatter', () => {
48
- test('accept empty object', () => {
49
- const frontMatter: DocFrontMatter = {};
50
- expect(validateDocFrontMatter(frontMatter)).toEqual(frontMatter);
51
- });
52
-
53
- test('accept unknown field', () => {
54
- const frontMatter = {abc: '1'};
55
- expect(validateDocFrontMatter(frontMatter)).toEqual(frontMatter);
56
- });
57
-
58
- testField({
59
- fieldName: 'id',
60
- validFrontMatters: [{id: '123'}, {id: 'unique_id'}],
61
- invalidFrontMatters: [[{id: ''}, 'is not allowed to be empty']],
62
- });
63
-
64
- testField({
65
- fieldName: 'title',
66
- validFrontMatters: [
67
- // See https://github.com/facebook/docusaurus/issues/4591#issuecomment-822372398
68
- {title: ''},
69
- {title: 'title'},
70
- ],
71
- });
72
-
73
- testField({
74
- fieldName: 'hide_title',
75
- validFrontMatters: [{hide_title: true}, {hide_title: false}],
76
- convertibleFrontMatter: [
77
- [{hide_title: 'true'}, {hide_title: true}],
78
- [{hide_title: 'false'}, {hide_title: false}],
79
- ],
80
- invalidFrontMatters: [
81
- [{hide_title: 'yes'}, 'must be a boolean'],
82
- [{hide_title: 'no'}, 'must be a boolean'],
83
- [{hide_title: ''}, 'must be a boolean'],
84
- ],
85
- });
86
-
87
- testField({
88
- fieldName: 'hide_table_of_contents',
89
- validFrontMatters: [
90
- {hide_table_of_contents: true},
91
- {hide_table_of_contents: false},
92
- ],
93
- convertibleFrontMatter: [
94
- [{hide_table_of_contents: 'true'}, {hide_table_of_contents: true}],
95
- [{hide_table_of_contents: 'false'}, {hide_table_of_contents: false}],
96
- ],
97
- invalidFrontMatters: [
98
- [{hide_table_of_contents: 'yes'}, 'must be a boolean'],
99
- [{hide_table_of_contents: 'no'}, 'must be a boolean'],
100
- [{hide_table_of_contents: ''}, 'must be a boolean'],
101
- ],
102
- });
103
-
104
- testField({
105
- fieldName: 'keywords',
106
- validFrontMatters: [
107
- {keywords: ['hello']},
108
- {keywords: ['hello', 'world']},
109
- {keywords: ['hello', 'world']},
110
- {keywords: ['hello']},
111
- ],
112
- invalidFrontMatters: [
113
- [{keywords: ''}, 'must be an array'],
114
- [{keywords: ['']}, 'is not allowed to be empty'],
115
- [{keywords: []}, 'does not contain 1 required value(s)'],
116
- ],
117
- });
118
-
119
- testField({
120
- fieldName: 'image',
121
- validFrontMatters: [{image: 'https://docusaurus.io/blog/image.png'}],
122
- invalidFrontMatters: [
123
- [{image: ''}, 'is not allowed to be empty'],
124
- [{image: './api/@docusaurus/plugin-debug'}, 'must be a valid uri'],
125
- [{image: '/api/@docusaurus/plugin-debug'}, 'must be a valid uri'],
126
- [{image: '@site/api/asset/image.png'}, 'must be a valid uri'],
127
- ],
128
- });
129
-
130
- testField({
131
- fieldName: 'description',
132
- validFrontMatters: [
133
- // See https://github.com/facebook/docusaurus/issues/4591#issuecomment-822372398
134
- {description: ''},
135
- {description: 'description'},
136
- ],
137
- });
138
-
139
- testField({
140
- fieldName: 'slug',
141
- validFrontMatters: [
142
- {slug: '/'},
143
- {slug: 'slug'},
144
- {slug: '/slug/'},
145
- {slug: './slug'},
146
- {slug: '../../slug'},
147
- {slug: '/api/plugins/@docusaurus'},
148
- {slug: '@site/api/asset'},
149
- {slug: 'slug1 slug2'},
150
- ],
151
- invalidFrontMatters: [[{slug: ''}, 'is not allowed to be empty']],
152
- });
153
-
154
- testField({
155
- fieldName: 'sidebar_label',
156
- validFrontMatters: [{sidebar_label: 'Awesome docs'}],
157
- invalidFrontMatters: [[{sidebar_label: ''}, 'is not allowed to be empty']],
158
- });
159
-
160
- testField({
161
- fieldName: 'sidebar_position',
162
- validFrontMatters: [
163
- {sidebar_position: 0},
164
- {sidebar_position: 5},
165
- {sidebar_position: 3.5},
166
- ],
167
- convertibleFrontMatter: [
168
- [{sidebar_position: '1'}, {sidebar_position: 1}],
169
- [{sidebar_position: '1.5'}, {sidebar_position: 1.5}],
170
- ],
171
- invalidFrontMatters: [
172
- [{sidebar_position: -1}, 'must be greater than or equal to 0'],
173
- ],
174
- });
175
-
176
- testField({
177
- fieldName: 'custom_edit_url',
178
- validFrontMatters: [
179
- // See https://github.com/demisto/content-docs/pull/616#issuecomment-827087566
180
- {custom_edit_url: ''},
181
- {custom_edit_url: null},
182
- {custom_edit_url: 'https://github.com/facebook/docusaurus/markdown.md'},
183
- {custom_edit_url: '../../api/docs/markdown.md'},
184
- {custom_edit_url: '@site/api/docs/markdown.md'},
185
- ],
186
- });
187
-
188
- testField({
189
- fieldName: 'parse_number_prefixes',
190
- validFrontMatters: [
191
- {parse_number_prefixes: true},
192
- {parse_number_prefixes: false},
193
- ],
194
- convertibleFrontMatter: [
195
- [{parse_number_prefixes: 'true'}, {parse_number_prefixes: true}],
196
- [{parse_number_prefixes: 'false'}, {parse_number_prefixes: false}],
197
- ],
198
- invalidFrontMatters: [
199
- [{parse_number_prefixes: 'yes'}, 'must be a boolean'],
200
- [{parse_number_prefixes: 'no'}, 'must be a boolean'],
201
- [{parse_number_prefixes: ''}, 'must be a boolean'],
202
- ],
203
- });
204
- });