@docusaurus/plugin-content-docs 2.0.0-beta.12faed89d → 2.0.0-beta.13
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 +0 -3
- package/lib/client/docsClientUtils.js +19 -22
- package/lib/docFrontMatter.d.ts +1 -1
- package/lib/docFrontMatter.js +7 -3
- package/lib/docs.d.ts +25 -3
- package/lib/docs.js +125 -41
- package/lib/globalData.d.ts +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +100 -131
- package/lib/lastUpdate.js +8 -9
- 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 +48 -11
- package/lib/props.d.ts +7 -2
- package/lib/props.js +60 -8
- 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 +21 -21
- package/lib/translations.d.ts +2 -2
- package/lib/translations.js +71 -29
- package/lib/types.d.ts +52 -63
- package/lib/versions.d.ts +3 -3
- package/lib/versions.js +41 -22
- package/package.json +20 -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 +745 -97
- package/src/__tests__/__snapshots__/translations.test.ts.snap +45 -15
- package/src/__tests__/cli.test.ts +15 -11
- package/src/__tests__/docFrontMatter.test.ts +160 -45
- package/src/__tests__/docs.test.ts +311 -150
- package/src/__tests__/index.test.ts +108 -66
- package/src/__tests__/lastUpdate.test.ts +1 -1
- package/src/__tests__/options.test.ts +48 -3
- package/src/__tests__/props.test.ts +62 -0
- package/src/__tests__/slug.test.ts +127 -20
- package/src/__tests__/translations.test.ts +7 -1
- package/src/__tests__/versions.test.ts +73 -70
- package/src/categoryGeneratedIndex.ts +57 -0
- package/src/cli.ts +8 -41
- package/src/client/docsClientUtils.ts +14 -26
- package/{types.d.ts → src/deps.d.ts} +0 -0
- package/src/docFrontMatter.ts +9 -4
- package/src/docs.ts +158 -32
- package/src/globalData.ts +6 -1
- package/src/index.ts +125 -169
- package/src/lastUpdate.ts +10 -13
- package/src/markdown/index.ts +8 -12
- package/src/numberPrefix.ts +5 -3
- package/src/options.ts +59 -14
- package/src/plugin-content-docs.d.ts +173 -40
- package/src/props.ts +90 -15
- 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/translations.ts +103 -47
- package/src/types.ts +64 -107
- package/src/versions.ts +59 -25
- package/lib/sidebarItemsGenerator.js +0 -211
- package/lib/sidebars.d.ts +0 -43
- package/lib/sidebars.js +0 -320
- package/src/__tests__/sidebars.test.ts +0 -639
- package/src/sidebarItemsGenerator.ts +0 -307
- package/src/sidebars.ts +0 -522
|
@@ -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,
|
|
@@ -177,6 +196,13 @@ Object {
|
|
|
177
196
|
},
|
|
178
197
|
],
|
|
179
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
|
+
},
|
|
180
206
|
"type": "category",
|
|
181
207
|
},
|
|
182
208
|
Object {
|
|
@@ -207,7 +233,6 @@ Object {
|
|
|
207
233
|
"description": "doc1 description",
|
|
208
234
|
"editUrl": "any",
|
|
209
235
|
"id": "doc1",
|
|
210
|
-
"isDocsHomePage": false,
|
|
211
236
|
"lastUpdatedAt": 0,
|
|
212
237
|
"lastUpdatedBy": "any",
|
|
213
238
|
"next": undefined,
|
|
@@ -224,7 +249,6 @@ Object {
|
|
|
224
249
|
"description": "doc2 description",
|
|
225
250
|
"editUrl": "any",
|
|
226
251
|
"id": "doc2",
|
|
227
|
-
"isDocsHomePage": false,
|
|
228
252
|
"lastUpdatedAt": 0,
|
|
229
253
|
"lastUpdatedBy": "any",
|
|
230
254
|
"next": undefined,
|
|
@@ -241,7 +265,6 @@ Object {
|
|
|
241
265
|
"description": "doc3 description",
|
|
242
266
|
"editUrl": "any",
|
|
243
267
|
"id": "doc3",
|
|
244
|
-
"isDocsHomePage": false,
|
|
245
268
|
"lastUpdatedAt": 0,
|
|
246
269
|
"lastUpdatedBy": "any",
|
|
247
270
|
"next": undefined,
|
|
@@ -258,7 +281,6 @@ Object {
|
|
|
258
281
|
"description": "doc4 description",
|
|
259
282
|
"editUrl": "any",
|
|
260
283
|
"id": "doc4",
|
|
261
|
-
"isDocsHomePage": false,
|
|
262
284
|
"lastUpdatedAt": 0,
|
|
263
285
|
"lastUpdatedBy": "any",
|
|
264
286
|
"next": undefined,
|
|
@@ -275,7 +297,6 @@ Object {
|
|
|
275
297
|
"description": "doc5 description",
|
|
276
298
|
"editUrl": "any",
|
|
277
299
|
"id": "doc5",
|
|
278
|
-
"isDocsHomePage": false,
|
|
279
300
|
"lastUpdatedAt": 0,
|
|
280
301
|
"lastUpdatedBy": "any",
|
|
281
302
|
"next": undefined,
|
|
@@ -317,6 +338,13 @@ Object {
|
|
|
317
338
|
},
|
|
318
339
|
],
|
|
319
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
|
+
},
|
|
320
348
|
"type": "category",
|
|
321
349
|
},
|
|
322
350
|
Object {
|
|
@@ -347,7 +375,6 @@ Object {
|
|
|
347
375
|
"description": "doc1 description",
|
|
348
376
|
"editUrl": "any",
|
|
349
377
|
"id": "doc1",
|
|
350
|
-
"isDocsHomePage": false,
|
|
351
378
|
"lastUpdatedAt": 0,
|
|
352
379
|
"lastUpdatedBy": "any",
|
|
353
380
|
"next": undefined,
|
|
@@ -364,7 +391,6 @@ Object {
|
|
|
364
391
|
"description": "doc2 description",
|
|
365
392
|
"editUrl": "any",
|
|
366
393
|
"id": "doc2",
|
|
367
|
-
"isDocsHomePage": false,
|
|
368
394
|
"lastUpdatedAt": 0,
|
|
369
395
|
"lastUpdatedBy": "any",
|
|
370
396
|
"next": undefined,
|
|
@@ -381,7 +407,6 @@ Object {
|
|
|
381
407
|
"description": "doc3 description",
|
|
382
408
|
"editUrl": "any",
|
|
383
409
|
"id": "doc3",
|
|
384
|
-
"isDocsHomePage": false,
|
|
385
410
|
"lastUpdatedAt": 0,
|
|
386
411
|
"lastUpdatedBy": "any",
|
|
387
412
|
"next": undefined,
|
|
@@ -398,7 +423,6 @@ Object {
|
|
|
398
423
|
"description": "doc4 description",
|
|
399
424
|
"editUrl": "any",
|
|
400
425
|
"id": "doc4",
|
|
401
|
-
"isDocsHomePage": false,
|
|
402
426
|
"lastUpdatedAt": 0,
|
|
403
427
|
"lastUpdatedBy": "any",
|
|
404
428
|
"next": undefined,
|
|
@@ -415,7 +439,6 @@ Object {
|
|
|
415
439
|
"description": "doc5 description",
|
|
416
440
|
"editUrl": "any",
|
|
417
441
|
"id": "doc5",
|
|
418
|
-
"isDocsHomePage": false,
|
|
419
442
|
"lastUpdatedAt": 0,
|
|
420
443
|
"lastUpdatedBy": "any",
|
|
421
444
|
"next": undefined,
|
|
@@ -457,6 +480,13 @@ Object {
|
|
|
457
480
|
},
|
|
458
481
|
],
|
|
459
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
|
+
},
|
|
460
490
|
"type": "category",
|
|
461
491
|
},
|
|
462
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
|
};
|
|
@@ -10,7 +10,7 @@ import {DocFrontMatter} from '../types';
|
|
|
10
10
|
import escapeStringRegexp from 'escape-string-regexp';
|
|
11
11
|
|
|
12
12
|
function testField(params: {
|
|
13
|
-
|
|
13
|
+
prefix: string;
|
|
14
14
|
validFrontMatters: DocFrontMatter[];
|
|
15
15
|
convertibleFrontMatter?: [
|
|
16
16
|
ConvertableFrontMatter: Record<string, unknown>,
|
|
@@ -21,40 +21,38 @@ function testField(params: {
|
|
|
21
21
|
ErrorMessage: string,
|
|
22
22
|
][];
|
|
23
23
|
}) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
expect(validateDocFrontMatter(frontMatter)).toEqual(frontMatter);
|
|
28
|
-
});
|
|
24
|
+
test(`[${params.prefix}] accept valid values`, () => {
|
|
25
|
+
params.validFrontMatters.forEach((frontMatter) => {
|
|
26
|
+
expect(validateDocFrontMatter(frontMatter)).toEqual(frontMatter);
|
|
29
27
|
});
|
|
28
|
+
});
|
|
30
29
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
+
});
|
|
40
39
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
});
|
|
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
|
+
}
|
|
58
56
|
});
|
|
59
57
|
});
|
|
60
58
|
}
|
|
@@ -73,7 +71,7 @@ describe('validateDocFrontMatter', () => {
|
|
|
73
71
|
|
|
74
72
|
describe('validateDocFrontMatter id', () => {
|
|
75
73
|
testField({
|
|
76
|
-
|
|
74
|
+
prefix: 'id',
|
|
77
75
|
validFrontMatters: [{id: '123'}, {id: 'unique_id'}],
|
|
78
76
|
invalidFrontMatters: [[{id: ''}, 'is not allowed to be empty']],
|
|
79
77
|
});
|
|
@@ -81,7 +79,7 @@ describe('validateDocFrontMatter id', () => {
|
|
|
81
79
|
|
|
82
80
|
describe('validateDocFrontMatter title', () => {
|
|
83
81
|
testField({
|
|
84
|
-
|
|
82
|
+
prefix: 'title',
|
|
85
83
|
validFrontMatters: [
|
|
86
84
|
// See https://github.com/facebook/docusaurus/issues/4591#issuecomment-822372398
|
|
87
85
|
{title: ''},
|
|
@@ -92,7 +90,7 @@ describe('validateDocFrontMatter title', () => {
|
|
|
92
90
|
|
|
93
91
|
describe('validateDocFrontMatter hide_title', () => {
|
|
94
92
|
testField({
|
|
95
|
-
|
|
93
|
+
prefix: 'hide_title',
|
|
96
94
|
validFrontMatters: [{hide_title: true}, {hide_title: false}],
|
|
97
95
|
convertibleFrontMatter: [
|
|
98
96
|
[{hide_title: 'true'}, {hide_title: true}],
|
|
@@ -108,7 +106,7 @@ describe('validateDocFrontMatter hide_title', () => {
|
|
|
108
106
|
|
|
109
107
|
describe('validateDocFrontMatter hide_table_of_contents', () => {
|
|
110
108
|
testField({
|
|
111
|
-
|
|
109
|
+
prefix: 'hide_table_of_contents',
|
|
112
110
|
validFrontMatters: [
|
|
113
111
|
{hide_table_of_contents: true},
|
|
114
112
|
{hide_table_of_contents: false},
|
|
@@ -127,7 +125,7 @@ describe('validateDocFrontMatter hide_table_of_contents', () => {
|
|
|
127
125
|
|
|
128
126
|
describe('validateDocFrontMatter keywords', () => {
|
|
129
127
|
testField({
|
|
130
|
-
|
|
128
|
+
prefix: 'keywords',
|
|
131
129
|
validFrontMatters: [
|
|
132
130
|
{keywords: ['hello']},
|
|
133
131
|
{keywords: ['hello', 'world']},
|
|
@@ -144,21 +142,21 @@ describe('validateDocFrontMatter keywords', () => {
|
|
|
144
142
|
|
|
145
143
|
describe('validateDocFrontMatter image', () => {
|
|
146
144
|
testField({
|
|
147
|
-
|
|
145
|
+
prefix: 'image',
|
|
148
146
|
validFrontMatters: [
|
|
149
147
|
{image: 'https://docusaurus.io/blog/image.png'},
|
|
150
148
|
{image: '/absolute/image.png'},
|
|
151
149
|
{image: '../relative/image.png'},
|
|
152
150
|
],
|
|
153
151
|
invalidFrontMatters: [
|
|
154
|
-
[{image: ''}, 'does not
|
|
152
|
+
[{image: ''}, '"image" does not look like a valid url (value=\'\')'],
|
|
155
153
|
],
|
|
156
154
|
});
|
|
157
155
|
});
|
|
158
156
|
|
|
159
157
|
describe('validateDocFrontMatter description', () => {
|
|
160
158
|
testField({
|
|
161
|
-
|
|
159
|
+
prefix: 'description',
|
|
162
160
|
validFrontMatters: [
|
|
163
161
|
// See https://github.com/facebook/docusaurus/issues/4591#issuecomment-822372398
|
|
164
162
|
{description: ''},
|
|
@@ -169,7 +167,7 @@ describe('validateDocFrontMatter description', () => {
|
|
|
169
167
|
|
|
170
168
|
describe('validateDocFrontMatter slug', () => {
|
|
171
169
|
testField({
|
|
172
|
-
|
|
170
|
+
prefix: 'slug',
|
|
173
171
|
validFrontMatters: [
|
|
174
172
|
{slug: '/'},
|
|
175
173
|
{slug: 'slug'},
|
|
@@ -186,7 +184,7 @@ describe('validateDocFrontMatter slug', () => {
|
|
|
186
184
|
|
|
187
185
|
describe('validateDocFrontMatter sidebar_label', () => {
|
|
188
186
|
testField({
|
|
189
|
-
|
|
187
|
+
prefix: 'sidebar_label',
|
|
190
188
|
validFrontMatters: [{sidebar_label: 'Awesome docs'}],
|
|
191
189
|
invalidFrontMatters: [[{sidebar_label: ''}, 'is not allowed to be empty']],
|
|
192
190
|
});
|
|
@@ -194,7 +192,7 @@ describe('validateDocFrontMatter sidebar_label', () => {
|
|
|
194
192
|
|
|
195
193
|
describe('validateDocFrontMatter sidebar_position', () => {
|
|
196
194
|
testField({
|
|
197
|
-
|
|
195
|
+
prefix: 'sidebar_position',
|
|
198
196
|
validFrontMatters: [
|
|
199
197
|
{sidebar_position: -5},
|
|
200
198
|
{sidebar_position: -3.5},
|
|
@@ -212,7 +210,7 @@ describe('validateDocFrontMatter sidebar_position', () => {
|
|
|
212
210
|
|
|
213
211
|
describe('validateDocFrontMatter custom_edit_url', () => {
|
|
214
212
|
testField({
|
|
215
|
-
|
|
213
|
+
prefix: 'custom_edit_url',
|
|
216
214
|
validFrontMatters: [
|
|
217
215
|
// See https://github.com/demisto/content-docs/pull/616#issuecomment-827087566
|
|
218
216
|
{custom_edit_url: ''},
|
|
@@ -226,7 +224,7 @@ describe('validateDocFrontMatter custom_edit_url', () => {
|
|
|
226
224
|
|
|
227
225
|
describe('validateDocFrontMatter parse_number_prefixes', () => {
|
|
228
226
|
testField({
|
|
229
|
-
|
|
227
|
+
prefix: 'parse_number_prefixes',
|
|
230
228
|
validFrontMatters: [
|
|
231
229
|
{parse_number_prefixes: true},
|
|
232
230
|
{parse_number_prefixes: false},
|
|
@@ -242,3 +240,120 @@ describe('validateDocFrontMatter parse_number_prefixes', () => {
|
|
|
242
240
|
],
|
|
243
241
|
});
|
|
244
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
|
+
});
|