@docusaurus/plugin-content-docs 2.0.0-beta.1 → 2.0.0-beta.10
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.
- package/lib/.tsbuildinfo +1 -1
- package/lib/categoryGeneratedIndex.d.ts +12 -0
- package/lib/categoryGeneratedIndex.js +37 -0
- package/lib/cli.d.ts +2 -2
- package/lib/cli.js +12 -34
- package/lib/client/docsClientUtils.d.ts +1 -4
- package/lib/client/docsClientUtils.js +21 -31
- package/lib/docFrontMatter.d.ts +1 -1
- package/lib/docFrontMatter.js +10 -6
- package/lib/docs.d.ts +25 -3
- package/lib/docs.js +125 -38
- package/lib/globalData.d.ts +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +104 -138
- package/lib/lastUpdate.js +9 -10
- package/lib/markdown/index.d.ts +3 -6
- package/lib/markdown/index.js +3 -3
- package/lib/markdown/linkify.js +2 -2
- package/lib/numberPrefix.d.ts +1 -1
- package/lib/options.d.ts +3 -3
- package/lib/options.js +49 -17
- package/lib/props.d.ts +7 -2
- package/lib/props.js +61 -9
- package/lib/routes.d.ts +27 -0
- package/lib/routes.js +105 -0
- package/lib/{sidebarItemsGenerator.d.ts → sidebars/generator.d.ts} +5 -2
- package/lib/sidebars/generator.js +216 -0
- package/lib/sidebars/index.d.ts +15 -0
- package/lib/sidebars/index.js +73 -0
- package/lib/sidebars/normalization.d.ts +14 -0
- package/lib/sidebars/normalization.js +77 -0
- package/lib/sidebars/processor.d.ts +18 -0
- package/lib/sidebars/processor.js +85 -0
- package/lib/sidebars/types.d.ts +127 -0
- package/lib/sidebars/types.js +8 -0
- package/lib/sidebars/utils.d.ts +35 -0
- package/lib/sidebars/utils.js +228 -0
- package/lib/sidebars/validation.d.ts +10 -0
- package/lib/sidebars/validation.js +138 -0
- package/lib/slug.d.ts +4 -3
- package/lib/slug.js +27 -15
- package/lib/tags.d.ts +8 -0
- package/lib/tags.js +20 -0
- package/lib/theme/hooks/useDocs.js +24 -21
- package/lib/translations.d.ts +2 -2
- package/lib/translations.js +71 -29
- package/lib/types.d.ts +52 -62
- package/lib/versions.d.ts +3 -3
- package/lib/versions.js +76 -24
- package/package.json +22 -20
- package/src/__tests__/__fixtures__/simple-site/docs/_partials/somePartial.md +3 -0
- package/src/__tests__/__fixtures__/simple-site/docs/_partials/subfolder/somePartial.md +3 -0
- package/src/__tests__/__fixtures__/simple-site/docs/_somePartial.md +3 -0
- package/src/__tests__/__fixtures__/simple-site/docs/foo/baz.md +5 -0
- package/src/__tests__/__fixtures__/simple-site/docs/hello.md +2 -0
- package/src/__tests__/__fixtures__/simple-site/docs/rootAbsoluteSlug.md +2 -0
- package/src/__tests__/__fixtures__/simple-site/docs/rootRelativeSlug.md +2 -0
- package/src/__tests__/__fixtures__/simple-site/docs/rootResolvedSlug.md +2 -0
- package/src/__tests__/__fixtures__/simple-site/docs/rootTryToEscapeSlug.md +2 -0
- package/src/__tests__/__fixtures__/simple-site/sidebars.json +15 -1
- package/src/__tests__/__fixtures__/site-with-doc-label/docs/hello-1.md +1 -0
- package/src/__tests__/__fixtures__/versioned-site/docs/foo/bar.md +6 -0
- package/src/__tests__/__fixtures__/versioned-site/docs/hello.md +3 -0
- package/src/__tests__/__fixtures__/versioned-site/i18n/en/docusaurus-plugin-content-docs/version-1.0.0/hello.md +3 -0
- package/src/__tests__/__fixtures__/versioned-site/i18n/fr/docusaurus-plugin-content-docs/version-1.0.0/hello.md +3 -0
- package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.0/hello.md +3 -0
- package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.1/_partials/somePartial.md +3 -0
- package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.1/_partials/subfolder/somePartial.md +3 -0
- package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.1/_somePartial.md +3 -0
- package/src/__tests__/__fixtures__/versioned-site/versioned_docs/version-1.0.1/hello.md +3 -0
- package/src/__tests__/__fixtures__/versioned-site/versioned_sidebars/version-1.0.1-sidebars.json +2 -2
- package/src/__tests__/__snapshots__/cli.test.ts.snap +48 -73
- package/src/__tests__/__snapshots__/docs.test.ts.snap +140 -0
- package/src/__tests__/__snapshots__/index.test.ts.snap +753 -112
- package/src/__tests__/__snapshots__/translations.test.ts.snap +45 -18
- package/src/__tests__/cli.test.ts +15 -11
- package/src/__tests__/docFrontMatter.test.ts +195 -40
- package/src/__tests__/docs.test.ts +311 -150
- package/src/__tests__/index.test.ts +112 -69
- package/src/__tests__/lastUpdate.test.ts +3 -2
- package/src/__tests__/options.test.ts +48 -4
- package/src/__tests__/props.test.ts +62 -0
- package/src/__tests__/slug.test.ts +127 -20
- package/src/__tests__/translations.test.ts +7 -2
- package/src/__tests__/versions.test.ts +93 -67
- package/src/categoryGeneratedIndex.ts +57 -0
- package/src/cli.ts +8 -41
- package/src/client/__tests__/docsClientUtils.test.ts +4 -5
- package/src/client/docsClientUtils.ts +19 -41
- package/{types.d.ts → src/deps.d.ts} +0 -0
- package/src/docFrontMatter.ts +13 -7
- package/src/docs.ts +158 -29
- package/src/globalData.ts +6 -1
- package/src/index.ts +134 -179
- package/src/lastUpdate.ts +10 -9
- package/src/markdown/index.ts +8 -12
- package/src/numberPrefix.ts +5 -3
- package/src/options.ts +59 -28
- package/src/plugin-content-docs.d.ts +179 -35
- package/src/props.ts +91 -16
- package/src/routes.ts +173 -0
- package/src/{__tests__ → sidebars/__tests__}/__fixtures__/sidebars/sidebars-category-shorthand.js +0 -0
- package/src/{__tests__ → sidebars/__tests__}/__fixtures__/sidebars/sidebars-category-wrong-items.json +0 -0
- package/src/{__tests__ → sidebars/__tests__}/__fixtures__/sidebars/sidebars-category-wrong-label.json +0 -0
- package/src/{__tests__ → sidebars/__tests__}/__fixtures__/sidebars/sidebars-category.js +0 -0
- package/src/{__tests__ → sidebars/__tests__}/__fixtures__/sidebars/sidebars-collapsed-first-level.json +0 -0
- package/src/{__tests__ → sidebars/__tests__}/__fixtures__/sidebars/sidebars-collapsed.json +0 -0
- package/src/{__tests__ → sidebars/__tests__}/__fixtures__/sidebars/sidebars-doc-id-not-string.json +0 -0
- package/src/{__tests__ → sidebars/__tests__}/__fixtures__/sidebars/sidebars-first-level-not-category.js +0 -0
- package/src/{__tests__ → sidebars/__tests__}/__fixtures__/sidebars/sidebars-link-wrong-href.json +0 -0
- package/src/{__tests__ → sidebars/__tests__}/__fixtures__/sidebars/sidebars-link-wrong-label.json +0 -0
- package/src/{__tests__ → sidebars/__tests__}/__fixtures__/sidebars/sidebars-link.json +0 -0
- package/src/{__tests__ → sidebars/__tests__}/__fixtures__/sidebars/sidebars-unknown-type.json +0 -0
- package/src/{__tests__ → sidebars/__tests__}/__fixtures__/sidebars/sidebars-wrong-field.json +0 -0
- package/src/{__tests__ → sidebars/__tests__}/__fixtures__/sidebars/sidebars.json +0 -0
- package/src/{__tests__/__snapshots__/sidebars.test.ts.snap → sidebars/__tests__/__snapshots__/index.test.ts.snap} +36 -6
- package/src/{__tests__/sidebarItemsGenerator.test.ts → sidebars/__tests__/generator.test.ts} +143 -18
- package/src/sidebars/__tests__/index.test.ts +204 -0
- package/src/sidebars/__tests__/processor.test.ts +237 -0
- package/src/sidebars/__tests__/utils.test.ts +695 -0
- package/src/sidebars/__tests__/validation.test.ts +105 -0
- package/src/sidebars/generator.ts +310 -0
- package/src/sidebars/index.ts +94 -0
- package/src/sidebars/normalization.ts +112 -0
- package/src/sidebars/processor.ts +154 -0
- package/src/sidebars/types.ts +211 -0
- package/src/sidebars/utils.ts +329 -0
- package/src/sidebars/validation.ts +168 -0
- package/src/slug.ts +32 -17
- package/src/tags.ts +19 -0
- package/src/theme/hooks/useDocs.ts +5 -1
- package/src/translations.ts +103 -47
- package/src/types.ts +67 -105
- package/src/versions.ts +117 -21
- package/lib/sidebarItemsGenerator.js +0 -211
- package/lib/sidebars.d.ts +0 -43
- package/lib/sidebars.js +0 -319
- package/src/__tests__/sidebars.test.ts +0 -639
- package/src/sidebarItemsGenerator.ts +0 -307
- package/src/sidebars.ts +0 -506
|
@@ -8,6 +8,14 @@ Array [
|
|
|
8
8
|
"description": "The label for category Getting started in sidebar docs",
|
|
9
9
|
"message": "Getting started",
|
|
10
10
|
},
|
|
11
|
+
"sidebar.docs.category.Getting started.link.generated-index.description": Object {
|
|
12
|
+
"description": "The generated-index page description for category Getting started in sidebar docs",
|
|
13
|
+
"message": "Getting started index description",
|
|
14
|
+
},
|
|
15
|
+
"sidebar.docs.category.Getting started.link.generated-index.title": Object {
|
|
16
|
+
"description": "The generated-index page title for category Getting started in sidebar docs",
|
|
17
|
+
"message": "Getting started index title",
|
|
18
|
+
},
|
|
11
19
|
"sidebar.docs.link.Link label": Object {
|
|
12
20
|
"description": "The label for link Link label in sidebar docs, linking to https://facebook.com",
|
|
13
21
|
"message": "Link label",
|
|
@@ -25,6 +33,14 @@ Array [
|
|
|
25
33
|
"description": "The label for category Getting started in sidebar docs",
|
|
26
34
|
"message": "Getting started",
|
|
27
35
|
},
|
|
36
|
+
"sidebar.docs.category.Getting started.link.generated-index.description": Object {
|
|
37
|
+
"description": "The generated-index page description for category Getting started in sidebar docs",
|
|
38
|
+
"message": "Getting started index description",
|
|
39
|
+
},
|
|
40
|
+
"sidebar.docs.category.Getting started.link.generated-index.title": Object {
|
|
41
|
+
"description": "The generated-index page title for category Getting started in sidebar docs",
|
|
42
|
+
"message": "Getting started index title",
|
|
43
|
+
},
|
|
28
44
|
"sidebar.docs.link.Link label": Object {
|
|
29
45
|
"description": "The label for link Link label in sidebar docs, linking to https://facebook.com",
|
|
30
46
|
"message": "Link label",
|
|
@@ -42,6 +58,14 @@ Array [
|
|
|
42
58
|
"description": "The label for category Getting started in sidebar docs",
|
|
43
59
|
"message": "Getting started",
|
|
44
60
|
},
|
|
61
|
+
"sidebar.docs.category.Getting started.link.generated-index.description": Object {
|
|
62
|
+
"description": "The generated-index page description for category Getting started in sidebar docs",
|
|
63
|
+
"message": "Getting started index description",
|
|
64
|
+
},
|
|
65
|
+
"sidebar.docs.category.Getting started.link.generated-index.title": Object {
|
|
66
|
+
"description": "The generated-index page title for category Getting started in sidebar docs",
|
|
67
|
+
"message": "Getting started index title",
|
|
68
|
+
},
|
|
45
69
|
"sidebar.docs.link.Link label": Object {
|
|
46
70
|
"description": "The label for link Link label in sidebar docs, linking to https://facebook.com",
|
|
47
71
|
"message": "Link label",
|
|
@@ -67,7 +91,6 @@ Object {
|
|
|
67
91
|
"description": "doc1 description",
|
|
68
92
|
"editUrl": "any",
|
|
69
93
|
"id": "doc1",
|
|
70
|
-
"isDocsHomePage": false,
|
|
71
94
|
"lastUpdatedAt": 0,
|
|
72
95
|
"lastUpdatedBy": "any",
|
|
73
96
|
"next": undefined,
|
|
@@ -84,7 +107,6 @@ Object {
|
|
|
84
107
|
"description": "doc2 description",
|
|
85
108
|
"editUrl": "any",
|
|
86
109
|
"id": "doc2",
|
|
87
|
-
"isDocsHomePage": false,
|
|
88
110
|
"lastUpdatedAt": 0,
|
|
89
111
|
"lastUpdatedBy": "any",
|
|
90
112
|
"next": undefined,
|
|
@@ -101,7 +123,6 @@ Object {
|
|
|
101
123
|
"description": "doc3 description",
|
|
102
124
|
"editUrl": "any",
|
|
103
125
|
"id": "doc3",
|
|
104
|
-
"isDocsHomePage": false,
|
|
105
126
|
"lastUpdatedAt": 0,
|
|
106
127
|
"lastUpdatedBy": "any",
|
|
107
128
|
"next": undefined,
|
|
@@ -118,7 +139,6 @@ Object {
|
|
|
118
139
|
"description": "doc4 description",
|
|
119
140
|
"editUrl": "any",
|
|
120
141
|
"id": "doc4",
|
|
121
|
-
"isDocsHomePage": false,
|
|
122
142
|
"lastUpdatedAt": 0,
|
|
123
143
|
"lastUpdatedBy": "any",
|
|
124
144
|
"next": undefined,
|
|
@@ -135,7 +155,6 @@ Object {
|
|
|
135
155
|
"description": "doc5 description",
|
|
136
156
|
"editUrl": "any",
|
|
137
157
|
"id": "doc5",
|
|
138
|
-
"isDocsHomePage": false,
|
|
139
158
|
"lastUpdatedAt": 0,
|
|
140
159
|
"lastUpdatedBy": "any",
|
|
141
160
|
"next": undefined,
|
|
@@ -151,7 +170,6 @@ Object {
|
|
|
151
170
|
],
|
|
152
171
|
"isLast": true,
|
|
153
172
|
"mainDocId": "",
|
|
154
|
-
"permalinkToSidebar": Object {},
|
|
155
173
|
"routePriority": undefined,
|
|
156
174
|
"sidebarFilePath": "any",
|
|
157
175
|
"sidebars": Object {
|
|
@@ -178,6 +196,13 @@ Object {
|
|
|
178
196
|
},
|
|
179
197
|
],
|
|
180
198
|
"label": "Getting started (translated)",
|
|
199
|
+
"link": Object {
|
|
200
|
+
"description": "Getting started index description (translated)",
|
|
201
|
+
"permalink": "/docs/category/getting-started-index-slug",
|
|
202
|
+
"slug": "/category/getting-started-index-slug",
|
|
203
|
+
"title": "Getting started index title (translated)",
|
|
204
|
+
"type": "generated-index",
|
|
205
|
+
},
|
|
181
206
|
"type": "category",
|
|
182
207
|
},
|
|
183
208
|
Object {
|
|
@@ -208,7 +233,6 @@ Object {
|
|
|
208
233
|
"description": "doc1 description",
|
|
209
234
|
"editUrl": "any",
|
|
210
235
|
"id": "doc1",
|
|
211
|
-
"isDocsHomePage": false,
|
|
212
236
|
"lastUpdatedAt": 0,
|
|
213
237
|
"lastUpdatedBy": "any",
|
|
214
238
|
"next": undefined,
|
|
@@ -225,7 +249,6 @@ Object {
|
|
|
225
249
|
"description": "doc2 description",
|
|
226
250
|
"editUrl": "any",
|
|
227
251
|
"id": "doc2",
|
|
228
|
-
"isDocsHomePage": false,
|
|
229
252
|
"lastUpdatedAt": 0,
|
|
230
253
|
"lastUpdatedBy": "any",
|
|
231
254
|
"next": undefined,
|
|
@@ -242,7 +265,6 @@ Object {
|
|
|
242
265
|
"description": "doc3 description",
|
|
243
266
|
"editUrl": "any",
|
|
244
267
|
"id": "doc3",
|
|
245
|
-
"isDocsHomePage": false,
|
|
246
268
|
"lastUpdatedAt": 0,
|
|
247
269
|
"lastUpdatedBy": "any",
|
|
248
270
|
"next": undefined,
|
|
@@ -259,7 +281,6 @@ Object {
|
|
|
259
281
|
"description": "doc4 description",
|
|
260
282
|
"editUrl": "any",
|
|
261
283
|
"id": "doc4",
|
|
262
|
-
"isDocsHomePage": false,
|
|
263
284
|
"lastUpdatedAt": 0,
|
|
264
285
|
"lastUpdatedBy": "any",
|
|
265
286
|
"next": undefined,
|
|
@@ -276,7 +297,6 @@ Object {
|
|
|
276
297
|
"description": "doc5 description",
|
|
277
298
|
"editUrl": "any",
|
|
278
299
|
"id": "doc5",
|
|
279
|
-
"isDocsHomePage": false,
|
|
280
300
|
"lastUpdatedAt": 0,
|
|
281
301
|
"lastUpdatedBy": "any",
|
|
282
302
|
"next": undefined,
|
|
@@ -292,7 +312,6 @@ Object {
|
|
|
292
312
|
],
|
|
293
313
|
"isLast": true,
|
|
294
314
|
"mainDocId": "",
|
|
295
|
-
"permalinkToSidebar": Object {},
|
|
296
315
|
"routePriority": undefined,
|
|
297
316
|
"sidebarFilePath": "any",
|
|
298
317
|
"sidebars": Object {
|
|
@@ -319,6 +338,13 @@ Object {
|
|
|
319
338
|
},
|
|
320
339
|
],
|
|
321
340
|
"label": "Getting started (translated)",
|
|
341
|
+
"link": Object {
|
|
342
|
+
"description": "Getting started index description (translated)",
|
|
343
|
+
"permalink": "/docs/category/getting-started-index-slug",
|
|
344
|
+
"slug": "/category/getting-started-index-slug",
|
|
345
|
+
"title": "Getting started index title (translated)",
|
|
346
|
+
"type": "generated-index",
|
|
347
|
+
},
|
|
322
348
|
"type": "category",
|
|
323
349
|
},
|
|
324
350
|
Object {
|
|
@@ -349,7 +375,6 @@ Object {
|
|
|
349
375
|
"description": "doc1 description",
|
|
350
376
|
"editUrl": "any",
|
|
351
377
|
"id": "doc1",
|
|
352
|
-
"isDocsHomePage": false,
|
|
353
378
|
"lastUpdatedAt": 0,
|
|
354
379
|
"lastUpdatedBy": "any",
|
|
355
380
|
"next": undefined,
|
|
@@ -366,7 +391,6 @@ Object {
|
|
|
366
391
|
"description": "doc2 description",
|
|
367
392
|
"editUrl": "any",
|
|
368
393
|
"id": "doc2",
|
|
369
|
-
"isDocsHomePage": false,
|
|
370
394
|
"lastUpdatedAt": 0,
|
|
371
395
|
"lastUpdatedBy": "any",
|
|
372
396
|
"next": undefined,
|
|
@@ -383,7 +407,6 @@ Object {
|
|
|
383
407
|
"description": "doc3 description",
|
|
384
408
|
"editUrl": "any",
|
|
385
409
|
"id": "doc3",
|
|
386
|
-
"isDocsHomePage": false,
|
|
387
410
|
"lastUpdatedAt": 0,
|
|
388
411
|
"lastUpdatedBy": "any",
|
|
389
412
|
"next": undefined,
|
|
@@ -400,7 +423,6 @@ Object {
|
|
|
400
423
|
"description": "doc4 description",
|
|
401
424
|
"editUrl": "any",
|
|
402
425
|
"id": "doc4",
|
|
403
|
-
"isDocsHomePage": false,
|
|
404
426
|
"lastUpdatedAt": 0,
|
|
405
427
|
"lastUpdatedBy": "any",
|
|
406
428
|
"next": undefined,
|
|
@@ -417,7 +439,6 @@ Object {
|
|
|
417
439
|
"description": "doc5 description",
|
|
418
440
|
"editUrl": "any",
|
|
419
441
|
"id": "doc5",
|
|
420
|
-
"isDocsHomePage": false,
|
|
421
442
|
"lastUpdatedAt": 0,
|
|
422
443
|
"lastUpdatedBy": "any",
|
|
423
444
|
"next": undefined,
|
|
@@ -433,7 +454,6 @@ Object {
|
|
|
433
454
|
],
|
|
434
455
|
"isLast": true,
|
|
435
456
|
"mainDocId": "",
|
|
436
|
-
"permalinkToSidebar": Object {},
|
|
437
457
|
"routePriority": undefined,
|
|
438
458
|
"sidebarFilePath": "any",
|
|
439
459
|
"sidebars": Object {
|
|
@@ -460,6 +480,13 @@ Object {
|
|
|
460
480
|
},
|
|
461
481
|
],
|
|
462
482
|
"label": "Getting started (translated)",
|
|
483
|
+
"link": Object {
|
|
484
|
+
"description": "Getting started index description (translated)",
|
|
485
|
+
"permalink": "/docs/category/getting-started-index-slug",
|
|
486
|
+
"slug": "/category/getting-started-index-slug",
|
|
487
|
+
"title": "Getting started index title (translated)",
|
|
488
|
+
"type": "generated-index",
|
|
489
|
+
},
|
|
463
490
|
"type": "category",
|
|
464
491
|
},
|
|
465
492
|
Object {
|
|
@@ -7,23 +7,26 @@
|
|
|
7
7
|
|
|
8
8
|
import path from 'path';
|
|
9
9
|
import {cliDocsVersionCommand} from '../cli';
|
|
10
|
-
import {PathOptions} from '../types';
|
|
10
|
+
import {PathOptions, SidebarOptions} from '../types';
|
|
11
11
|
import fs from 'fs-extra';
|
|
12
12
|
import {
|
|
13
13
|
getVersionedDocsDirPath,
|
|
14
14
|
getVersionsFilePath,
|
|
15
15
|
getVersionedSidebarsDirPath,
|
|
16
16
|
} from '../versions';
|
|
17
|
-
import {DEFAULT_PLUGIN_ID} from '@docusaurus/
|
|
17
|
+
import {DEFAULT_PLUGIN_ID} from '@docusaurus/utils';
|
|
18
18
|
|
|
19
19
|
const fixtureDir = path.join(__dirname, '__fixtures__');
|
|
20
20
|
|
|
21
21
|
describe('docsVersion', () => {
|
|
22
22
|
const simpleSiteDir = path.join(fixtureDir, 'simple-site');
|
|
23
23
|
const versionedSiteDir = path.join(fixtureDir, 'versioned-site');
|
|
24
|
-
|
|
24
|
+
|
|
25
|
+
const DEFAULT_OPTIONS: PathOptions & SidebarOptions = {
|
|
25
26
|
path: 'docs',
|
|
26
27
|
sidebarPath: '',
|
|
28
|
+
sidebarCollapsed: true,
|
|
29
|
+
sidebarCollapsible: true,
|
|
27
30
|
};
|
|
28
31
|
|
|
29
32
|
test('no version tag provided', () => {
|
|
@@ -186,17 +189,17 @@ describe('docsVersion', () => {
|
|
|
186
189
|
let versionedSidebarPath;
|
|
187
190
|
writeMock.mockImplementationOnce((filepath, content) => {
|
|
188
191
|
versionedSidebarPath = filepath;
|
|
189
|
-
versionedSidebar = JSON.parse(content);
|
|
192
|
+
versionedSidebar = JSON.parse(content as string);
|
|
190
193
|
});
|
|
191
194
|
let versionsPath;
|
|
192
195
|
let versions;
|
|
193
196
|
writeMock.mockImplementationOnce((filepath, content) => {
|
|
194
197
|
versionsPath = filepath;
|
|
195
|
-
versions = JSON.parse(content);
|
|
198
|
+
versions = JSON.parse(content as string);
|
|
196
199
|
});
|
|
197
200
|
const consoleMock = jest.spyOn(console, 'log').mockImplementation();
|
|
198
201
|
const options = {
|
|
199
|
-
|
|
202
|
+
...DEFAULT_OPTIONS,
|
|
200
203
|
sidebarPath: path.join(simpleSiteDir, 'sidebars.json'),
|
|
201
204
|
};
|
|
202
205
|
cliDocsVersionCommand('1.0.0', simpleSiteDir, DEFAULT_PLUGIN_ID, options);
|
|
@@ -234,17 +237,17 @@ describe('docsVersion', () => {
|
|
|
234
237
|
let versionedSidebarPath;
|
|
235
238
|
writeMock.mockImplementationOnce((filepath, content) => {
|
|
236
239
|
versionedSidebarPath = filepath;
|
|
237
|
-
versionedSidebar = JSON.parse(content);
|
|
240
|
+
versionedSidebar = JSON.parse(content as string);
|
|
238
241
|
});
|
|
239
242
|
let versionsPath;
|
|
240
243
|
let versions;
|
|
241
244
|
writeMock.mockImplementationOnce((filepath, content) => {
|
|
242
245
|
versionsPath = filepath;
|
|
243
|
-
versions = JSON.parse(content);
|
|
246
|
+
versions = JSON.parse(content as string);
|
|
244
247
|
});
|
|
245
248
|
const consoleMock = jest.spyOn(console, 'log').mockImplementation();
|
|
246
249
|
const options = {
|
|
247
|
-
|
|
250
|
+
...DEFAULT_OPTIONS,
|
|
248
251
|
sidebarPath: path.join(versionedSiteDir, 'sidebars.json'),
|
|
249
252
|
};
|
|
250
253
|
cliDocsVersionCommand(
|
|
@@ -289,16 +292,17 @@ describe('docsVersion', () => {
|
|
|
289
292
|
let versionedSidebarPath;
|
|
290
293
|
writeMock.mockImplementationOnce((filepath, content) => {
|
|
291
294
|
versionedSidebarPath = filepath;
|
|
292
|
-
versionedSidebar = JSON.parse(content);
|
|
295
|
+
versionedSidebar = JSON.parse(content as string);
|
|
293
296
|
});
|
|
294
297
|
let versionsPath;
|
|
295
298
|
let versions;
|
|
296
299
|
writeMock.mockImplementationOnce((filepath, content) => {
|
|
297
300
|
versionsPath = filepath;
|
|
298
|
-
versions = JSON.parse(content);
|
|
301
|
+
versions = JSON.parse(content as string);
|
|
299
302
|
});
|
|
300
303
|
const consoleMock = jest.spyOn(console, 'log').mockImplementation();
|
|
301
304
|
const options = {
|
|
305
|
+
...DEFAULT_OPTIONS,
|
|
302
306
|
path: 'community',
|
|
303
307
|
sidebarPath: path.join(versionedSiteDir, 'community_sidebars.json'),
|
|
304
308
|
};
|
|
@@ -5,10 +5,12 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import {
|
|
8
|
+
import {validateDocFrontMatter} from '../docFrontMatter';
|
|
9
|
+
import {DocFrontMatter} from '../types';
|
|
10
|
+
import escapeStringRegexp from 'escape-string-regexp';
|
|
9
11
|
|
|
10
12
|
function testField(params: {
|
|
11
|
-
|
|
13
|
+
prefix: string;
|
|
12
14
|
validFrontMatters: DocFrontMatter[];
|
|
13
15
|
convertibleFrontMatter?: [
|
|
14
16
|
ConvertableFrontMatter: Record<string, unknown>,
|
|
@@ -19,27 +21,38 @@ function testField(params: {
|
|
|
19
21
|
ErrorMessage: string,
|
|
20
22
|
][];
|
|
21
23
|
}) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
expect(validateDocFrontMatter(frontMatter)).toEqual(frontMatter);
|
|
26
|
-
});
|
|
24
|
+
test(`[${params.prefix}] accept valid values`, () => {
|
|
25
|
+
params.validFrontMatters.forEach((frontMatter) => {
|
|
26
|
+
expect(validateDocFrontMatter(frontMatter)).toEqual(frontMatter);
|
|
27
27
|
});
|
|
28
|
+
});
|
|
28
29
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
30
|
+
test(`[${params.prefix}] convert valid values`, () => {
|
|
31
|
+
params.convertibleFrontMatter?.forEach(
|
|
32
|
+
([convertibleFrontMatter, convertedFrontMatter]) => {
|
|
33
|
+
expect(validateDocFrontMatter(convertibleFrontMatter)).toEqual(
|
|
34
|
+
convertedFrontMatter,
|
|
35
|
+
);
|
|
36
|
+
},
|
|
37
|
+
);
|
|
38
|
+
});
|
|
38
39
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
test(`[${params.prefix}] throw error for values`, () => {
|
|
41
|
+
params.invalidFrontMatters?.forEach(([frontMatter, message]) => {
|
|
42
|
+
try {
|
|
43
|
+
validateDocFrontMatter(frontMatter);
|
|
44
|
+
fail(
|
|
45
|
+
new Error(
|
|
46
|
+
`Doc frontmatter is expected to be rejected, but was accepted successfully:\n ${JSON.stringify(
|
|
47
|
+
frontMatter,
|
|
48
|
+
null,
|
|
49
|
+
2,
|
|
50
|
+
)}`,
|
|
51
|
+
),
|
|
52
|
+
);
|
|
53
|
+
} catch (e) {
|
|
54
|
+
expect(e.message).toMatch(new RegExp(escapeStringRegexp(message)));
|
|
55
|
+
}
|
|
43
56
|
});
|
|
44
57
|
});
|
|
45
58
|
}
|
|
@@ -54,24 +67,30 @@ describe('validateDocFrontMatter', () => {
|
|
|
54
67
|
const frontMatter = {abc: '1'};
|
|
55
68
|
expect(validateDocFrontMatter(frontMatter)).toEqual(frontMatter);
|
|
56
69
|
});
|
|
70
|
+
});
|
|
57
71
|
|
|
72
|
+
describe('validateDocFrontMatter id', () => {
|
|
58
73
|
testField({
|
|
59
|
-
|
|
74
|
+
prefix: 'id',
|
|
60
75
|
validFrontMatters: [{id: '123'}, {id: 'unique_id'}],
|
|
61
76
|
invalidFrontMatters: [[{id: ''}, 'is not allowed to be empty']],
|
|
62
77
|
});
|
|
78
|
+
});
|
|
63
79
|
|
|
80
|
+
describe('validateDocFrontMatter title', () => {
|
|
64
81
|
testField({
|
|
65
|
-
|
|
82
|
+
prefix: 'title',
|
|
66
83
|
validFrontMatters: [
|
|
67
84
|
// See https://github.com/facebook/docusaurus/issues/4591#issuecomment-822372398
|
|
68
85
|
{title: ''},
|
|
69
86
|
{title: 'title'},
|
|
70
87
|
],
|
|
71
88
|
});
|
|
89
|
+
});
|
|
72
90
|
|
|
91
|
+
describe('validateDocFrontMatter hide_title', () => {
|
|
73
92
|
testField({
|
|
74
|
-
|
|
93
|
+
prefix: 'hide_title',
|
|
75
94
|
validFrontMatters: [{hide_title: true}, {hide_title: false}],
|
|
76
95
|
convertibleFrontMatter: [
|
|
77
96
|
[{hide_title: 'true'}, {hide_title: true}],
|
|
@@ -83,9 +102,11 @@ describe('validateDocFrontMatter', () => {
|
|
|
83
102
|
[{hide_title: ''}, 'must be a boolean'],
|
|
84
103
|
],
|
|
85
104
|
});
|
|
105
|
+
});
|
|
86
106
|
|
|
107
|
+
describe('validateDocFrontMatter hide_table_of_contents', () => {
|
|
87
108
|
testField({
|
|
88
|
-
|
|
109
|
+
prefix: 'hide_table_of_contents',
|
|
89
110
|
validFrontMatters: [
|
|
90
111
|
{hide_table_of_contents: true},
|
|
91
112
|
{hide_table_of_contents: false},
|
|
@@ -100,9 +121,11 @@ describe('validateDocFrontMatter', () => {
|
|
|
100
121
|
[{hide_table_of_contents: ''}, 'must be a boolean'],
|
|
101
122
|
],
|
|
102
123
|
});
|
|
124
|
+
});
|
|
103
125
|
|
|
126
|
+
describe('validateDocFrontMatter keywords', () => {
|
|
104
127
|
testField({
|
|
105
|
-
|
|
128
|
+
prefix: 'keywords',
|
|
106
129
|
validFrontMatters: [
|
|
107
130
|
{keywords: ['hello']},
|
|
108
131
|
{keywords: ['hello', 'world']},
|
|
@@ -115,29 +138,36 @@ describe('validateDocFrontMatter', () => {
|
|
|
115
138
|
[{keywords: []}, 'does not contain 1 required value(s)'],
|
|
116
139
|
],
|
|
117
140
|
});
|
|
141
|
+
});
|
|
118
142
|
|
|
143
|
+
describe('validateDocFrontMatter image', () => {
|
|
119
144
|
testField({
|
|
120
|
-
|
|
121
|
-
validFrontMatters: [
|
|
145
|
+
prefix: 'image',
|
|
146
|
+
validFrontMatters: [
|
|
147
|
+
{image: 'https://docusaurus.io/blog/image.png'},
|
|
148
|
+
{image: '/absolute/image.png'},
|
|
149
|
+
{image: '../relative/image.png'},
|
|
150
|
+
],
|
|
122
151
|
invalidFrontMatters: [
|
|
123
|
-
[{image: ''}, '
|
|
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'],
|
|
152
|
+
[{image: ''}, '"image" does not look like a valid url (value=\'\')'],
|
|
127
153
|
],
|
|
128
154
|
});
|
|
155
|
+
});
|
|
129
156
|
|
|
157
|
+
describe('validateDocFrontMatter description', () => {
|
|
130
158
|
testField({
|
|
131
|
-
|
|
159
|
+
prefix: 'description',
|
|
132
160
|
validFrontMatters: [
|
|
133
161
|
// See https://github.com/facebook/docusaurus/issues/4591#issuecomment-822372398
|
|
134
162
|
{description: ''},
|
|
135
163
|
{description: 'description'},
|
|
136
164
|
],
|
|
137
165
|
});
|
|
166
|
+
});
|
|
138
167
|
|
|
168
|
+
describe('validateDocFrontMatter slug', () => {
|
|
139
169
|
testField({
|
|
140
|
-
|
|
170
|
+
prefix: 'slug',
|
|
141
171
|
validFrontMatters: [
|
|
142
172
|
{slug: '/'},
|
|
143
173
|
{slug: 'slug'},
|
|
@@ -150,31 +180,37 @@ describe('validateDocFrontMatter', () => {
|
|
|
150
180
|
],
|
|
151
181
|
invalidFrontMatters: [[{slug: ''}, 'is not allowed to be empty']],
|
|
152
182
|
});
|
|
183
|
+
});
|
|
153
184
|
|
|
185
|
+
describe('validateDocFrontMatter sidebar_label', () => {
|
|
154
186
|
testField({
|
|
155
|
-
|
|
187
|
+
prefix: 'sidebar_label',
|
|
156
188
|
validFrontMatters: [{sidebar_label: 'Awesome docs'}],
|
|
157
189
|
invalidFrontMatters: [[{sidebar_label: ''}, 'is not allowed to be empty']],
|
|
158
190
|
});
|
|
191
|
+
});
|
|
159
192
|
|
|
193
|
+
describe('validateDocFrontMatter sidebar_position', () => {
|
|
160
194
|
testField({
|
|
161
|
-
|
|
195
|
+
prefix: 'sidebar_position',
|
|
162
196
|
validFrontMatters: [
|
|
197
|
+
{sidebar_position: -5},
|
|
198
|
+
{sidebar_position: -3.5},
|
|
163
199
|
{sidebar_position: 0},
|
|
164
200
|
{sidebar_position: 5},
|
|
165
201
|
{sidebar_position: 3.5},
|
|
166
202
|
],
|
|
167
203
|
convertibleFrontMatter: [
|
|
204
|
+
[{sidebar_position: '-1.5'}, {sidebar_position: -1.5}],
|
|
168
205
|
[{sidebar_position: '1'}, {sidebar_position: 1}],
|
|
169
206
|
[{sidebar_position: '1.5'}, {sidebar_position: 1.5}],
|
|
170
207
|
],
|
|
171
|
-
invalidFrontMatters: [
|
|
172
|
-
[{sidebar_position: -1}, 'must be greater than or equal to 0'],
|
|
173
|
-
],
|
|
174
208
|
});
|
|
209
|
+
});
|
|
175
210
|
|
|
211
|
+
describe('validateDocFrontMatter custom_edit_url', () => {
|
|
176
212
|
testField({
|
|
177
|
-
|
|
213
|
+
prefix: 'custom_edit_url',
|
|
178
214
|
validFrontMatters: [
|
|
179
215
|
// See https://github.com/demisto/content-docs/pull/616#issuecomment-827087566
|
|
180
216
|
{custom_edit_url: ''},
|
|
@@ -184,9 +220,11 @@ describe('validateDocFrontMatter', () => {
|
|
|
184
220
|
{custom_edit_url: '@site/api/docs/markdown.md'},
|
|
185
221
|
],
|
|
186
222
|
});
|
|
223
|
+
});
|
|
187
224
|
|
|
225
|
+
describe('validateDocFrontMatter parse_number_prefixes', () => {
|
|
188
226
|
testField({
|
|
189
|
-
|
|
227
|
+
prefix: 'parse_number_prefixes',
|
|
190
228
|
validFrontMatters: [
|
|
191
229
|
{parse_number_prefixes: true},
|
|
192
230
|
{parse_number_prefixes: false},
|
|
@@ -202,3 +240,120 @@ describe('validateDocFrontMatter', () => {
|
|
|
202
240
|
],
|
|
203
241
|
});
|
|
204
242
|
});
|
|
243
|
+
|
|
244
|
+
describe('validateDocFrontMatter tags', () => {
|
|
245
|
+
testField({
|
|
246
|
+
prefix: 'tags',
|
|
247
|
+
validFrontMatters: [{}, {tags: undefined}, {tags: ['tag1', 'tag2']}],
|
|
248
|
+
convertibleFrontMatter: [[{tags: ['tag1', 42]}, {tags: ['tag1', '42']}]],
|
|
249
|
+
invalidFrontMatters: [
|
|
250
|
+
[{tags: 42}, '"tags" does not look like a valid FrontMatter Yaml array.'],
|
|
251
|
+
[
|
|
252
|
+
{tags: 'tag1, tag2'},
|
|
253
|
+
'"tags" does not look like a valid FrontMatter Yaml array.',
|
|
254
|
+
],
|
|
255
|
+
[{tags: [{}]}, '"tags[0]" does not look like a valid tag'],
|
|
256
|
+
[{tags: [true]}, '"tags[0]" does not look like a valid tag'],
|
|
257
|
+
[
|
|
258
|
+
{tags: ['tag1', {hey: 'test'}]},
|
|
259
|
+
'"tags[1]" does not look like a valid tag',
|
|
260
|
+
],
|
|
261
|
+
],
|
|
262
|
+
});
|
|
263
|
+
});
|
|
264
|
+
|
|
265
|
+
describe('validateDocFrontMatter toc_min_heading_level', () => {
|
|
266
|
+
testField({
|
|
267
|
+
prefix: 'toc_min_heading_level',
|
|
268
|
+
validFrontMatters: [
|
|
269
|
+
{},
|
|
270
|
+
{toc_min_heading_level: undefined},
|
|
271
|
+
{toc_min_heading_level: 2},
|
|
272
|
+
{toc_min_heading_level: 3},
|
|
273
|
+
{toc_min_heading_level: 4},
|
|
274
|
+
{toc_min_heading_level: 5},
|
|
275
|
+
{toc_min_heading_level: 6},
|
|
276
|
+
],
|
|
277
|
+
convertibleFrontMatter: [
|
|
278
|
+
[{toc_min_heading_level: '2'}, {toc_min_heading_level: 2}],
|
|
279
|
+
],
|
|
280
|
+
invalidFrontMatters: [
|
|
281
|
+
[
|
|
282
|
+
{toc_min_heading_level: 1},
|
|
283
|
+
'"toc_min_heading_level" must be greater than or equal to 2',
|
|
284
|
+
],
|
|
285
|
+
[
|
|
286
|
+
{toc_min_heading_level: 7},
|
|
287
|
+
'"toc_min_heading_level" must be less than or equal to 6',
|
|
288
|
+
],
|
|
289
|
+
[
|
|
290
|
+
{toc_min_heading_level: 'hello'},
|
|
291
|
+
'"toc_min_heading_level" must be a number',
|
|
292
|
+
],
|
|
293
|
+
[
|
|
294
|
+
{toc_min_heading_level: true},
|
|
295
|
+
'"toc_min_heading_level" must be a number',
|
|
296
|
+
],
|
|
297
|
+
],
|
|
298
|
+
});
|
|
299
|
+
});
|
|
300
|
+
|
|
301
|
+
describe('validateDocFrontMatter toc_max_heading_level', () => {
|
|
302
|
+
testField({
|
|
303
|
+
prefix: 'toc_max_heading_level',
|
|
304
|
+
validFrontMatters: [
|
|
305
|
+
{},
|
|
306
|
+
{toc_max_heading_level: undefined},
|
|
307
|
+
{toc_max_heading_level: 2},
|
|
308
|
+
{toc_max_heading_level: 3},
|
|
309
|
+
{toc_max_heading_level: 4},
|
|
310
|
+
{toc_max_heading_level: 5},
|
|
311
|
+
{toc_max_heading_level: 6},
|
|
312
|
+
],
|
|
313
|
+
convertibleFrontMatter: [
|
|
314
|
+
[{toc_max_heading_level: '2'}, {toc_max_heading_level: 2}],
|
|
315
|
+
],
|
|
316
|
+
invalidFrontMatters: [
|
|
317
|
+
[
|
|
318
|
+
{toc_max_heading_level: 1},
|
|
319
|
+
'"toc_max_heading_level" must be greater than or equal to 2',
|
|
320
|
+
],
|
|
321
|
+
[
|
|
322
|
+
{toc_max_heading_level: 7},
|
|
323
|
+
'"toc_max_heading_level" must be less than or equal to 6',
|
|
324
|
+
],
|
|
325
|
+
[
|
|
326
|
+
{toc_max_heading_level: 'hello'},
|
|
327
|
+
'"toc_max_heading_level" must be a number',
|
|
328
|
+
],
|
|
329
|
+
[
|
|
330
|
+
{toc_max_heading_level: true},
|
|
331
|
+
'"toc_max_heading_level" must be a number',
|
|
332
|
+
],
|
|
333
|
+
],
|
|
334
|
+
});
|
|
335
|
+
});
|
|
336
|
+
|
|
337
|
+
describe('validateDocFrontMatter toc min/max consistency', () => {
|
|
338
|
+
testField({
|
|
339
|
+
prefix: 'toc min/max',
|
|
340
|
+
validFrontMatters: [
|
|
341
|
+
{},
|
|
342
|
+
{toc_min_heading_level: undefined, toc_max_heading_level: undefined},
|
|
343
|
+
{toc_min_heading_level: 2, toc_max_heading_level: 2},
|
|
344
|
+
{toc_min_heading_level: 2, toc_max_heading_level: 6},
|
|
345
|
+
{toc_min_heading_level: 2, toc_max_heading_level: 3},
|
|
346
|
+
{toc_min_heading_level: 3, toc_max_heading_level: 3},
|
|
347
|
+
],
|
|
348
|
+
invalidFrontMatters: [
|
|
349
|
+
[
|
|
350
|
+
{toc_min_heading_level: 4, toc_max_heading_level: 3},
|
|
351
|
+
'"toc_min_heading_level" must be less than or equal to ref:toc_max_heading_level',
|
|
352
|
+
],
|
|
353
|
+
[
|
|
354
|
+
{toc_min_heading_level: 6, toc_max_heading_level: 2},
|
|
355
|
+
'"toc_min_heading_level" must be less than or equal to ref:toc_max_heading_level',
|
|
356
|
+
],
|
|
357
|
+
],
|
|
358
|
+
});
|
|
359
|
+
});
|