@docusaurus/plugin-content-docs 2.0.0-beta.8bda3b2db → 2.0.0-beta.9
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/cli.d.ts +2 -2
- package/lib/cli.js +20 -24
- package/lib/client/docsClientUtils.d.ts +1 -4
- package/lib/client/docsClientUtils.js +12 -16
- package/lib/docFrontMatter.js +7 -3
- package/lib/docs.d.ts +4 -2
- package/lib/docs.js +77 -23
- package/lib/index.js +88 -94
- package/lib/lastUpdate.js +8 -8
- package/lib/markdown/index.d.ts +3 -6
- package/lib/markdown/index.js +3 -3
- package/lib/markdown/linkify.js +2 -2
- package/lib/options.d.ts +1 -1
- package/lib/options.js +39 -11
- package/lib/props.d.ts +7 -2
- package/lib/props.js +27 -4
- package/lib/{sidebarItemsGenerator.d.ts → sidebars/generator.d.ts} +3 -1
- package/lib/sidebars/generator.js +174 -0
- package/lib/sidebars/index.d.ts +14 -0
- package/lib/sidebars/index.js +64 -0
- package/lib/sidebars/normalization.d.ts +9 -0
- package/lib/sidebars/normalization.js +58 -0
- package/lib/sidebars/processor.d.ts +16 -0
- package/lib/sidebars/processor.js +70 -0
- package/lib/sidebars/types.d.ts +87 -0
- package/lib/sidebars/types.js +13 -0
- package/lib/sidebars/utils.d.ts +22 -0
- package/lib/sidebars/utils.js +101 -0
- package/lib/sidebars/validation.d.ts +8 -0
- package/lib/sidebars/validation.js +102 -0
- package/lib/slug.js +4 -4
- package/lib/tags.d.ts +8 -0
- package/lib/tags.js +22 -0
- package/lib/theme/hooks/useDocs.js +24 -21
- package/lib/translations.d.ts +1 -1
- package/lib/translations.js +13 -13
- package/lib/types.d.ts +35 -58
- package/lib/versions.d.ts +1 -1
- package/lib/versions.js +75 -22
- package/package.json +15 -14
- 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 +1 -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__/versioned-site/docs/foo/bar.md +6 -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__/__snapshots__/cli.test.ts.snap +33 -0
- package/src/__tests__/__snapshots__/docs.test.ts.snap +140 -0
- package/src/__tests__/__snapshots__/index.test.ts.snap +478 -60
- package/src/__tests__/__snapshots__/translations.test.ts.snap +0 -3
- package/src/__tests__/cli.test.ts +14 -10
- package/src/__tests__/docFrontMatter.test.ts +163 -48
- package/src/__tests__/docs.test.ts +167 -21
- package/src/__tests__/index.test.ts +74 -30
- package/src/__tests__/lastUpdate.test.ts +3 -2
- package/src/__tests__/options.test.ts +46 -3
- package/src/__tests__/props.test.ts +62 -0
- package/src/__tests__/translations.test.ts +0 -1
- package/src/__tests__/versions.test.ts +88 -60
- package/src/cli.ts +27 -30
- package/src/client/__tests__/docsClientUtils.test.ts +4 -5
- package/src/client/docsClientUtils.ts +6 -27
- package/src/docFrontMatter.ts +8 -3
- package/src/docs.ts +92 -9
- package/src/index.ts +114 -121
- package/src/lastUpdate.ts +10 -6
- package/src/markdown/index.ts +8 -12
- package/src/numberPrefix.ts +4 -2
- package/src/options.ts +47 -17
- package/src/plugin-content-docs.d.ts +121 -34
- package/src/props.ts +42 -6
- 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} +21 -6
- package/src/{__tests__/sidebarItemsGenerator.test.ts → sidebars/__tests__/generator.test.ts} +29 -7
- package/src/sidebars/__tests__/index.test.ts +202 -0
- package/src/sidebars/__tests__/processor.test.ts +148 -0
- package/src/sidebars/__tests__/utils.test.ts +395 -0
- package/src/sidebars/generator.ts +253 -0
- package/src/sidebars/index.ts +84 -0
- package/src/sidebars/normalization.ts +88 -0
- package/src/sidebars/processor.ts +124 -0
- package/src/sidebars/types.ts +156 -0
- package/src/sidebars/utils.ts +146 -0
- package/src/sidebars/validation.ts +124 -0
- package/src/tags.ts +21 -0
- package/src/theme/hooks/useDocs.ts +5 -1
- package/src/translations.ts +26 -36
- package/src/types.ts +48 -99
- package/src/versions.ts +109 -17
- 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
|
@@ -151,7 +151,6 @@ Object {
|
|
|
151
151
|
],
|
|
152
152
|
"isLast": true,
|
|
153
153
|
"mainDocId": "",
|
|
154
|
-
"permalinkToSidebar": Object {},
|
|
155
154
|
"routePriority": undefined,
|
|
156
155
|
"sidebarFilePath": "any",
|
|
157
156
|
"sidebars": Object {
|
|
@@ -292,7 +291,6 @@ Object {
|
|
|
292
291
|
],
|
|
293
292
|
"isLast": true,
|
|
294
293
|
"mainDocId": "",
|
|
295
|
-
"permalinkToSidebar": Object {},
|
|
296
294
|
"routePriority": undefined,
|
|
297
295
|
"sidebarFilePath": "any",
|
|
298
296
|
"sidebars": Object {
|
|
@@ -433,7 +431,6 @@ Object {
|
|
|
433
431
|
],
|
|
434
432
|
"isLast": true,
|
|
435
433
|
"mainDocId": "",
|
|
436
|
-
"permalinkToSidebar": Object {},
|
|
437
434
|
"routePriority": undefined,
|
|
438
435
|
"sidebarFilePath": "any",
|
|
439
436
|
"sidebars": Object {
|
|
@@ -7,7 +7,7 @@
|
|
|
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,
|
|
@@ -21,9 +21,12 @@ const fixtureDir = path.join(__dirname, '__fixtures__');
|
|
|
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,25 +192,25 @@ describe('validateDocFrontMatter sidebar_label', () => {
|
|
|
194
192
|
|
|
195
193
|
describe('validateDocFrontMatter sidebar_position', () => {
|
|
196
194
|
testField({
|
|
197
|
-
|
|
195
|
+
prefix: 'sidebar_position',
|
|
198
196
|
validFrontMatters: [
|
|
197
|
+
{sidebar_position: -5},
|
|
198
|
+
{sidebar_position: -3.5},
|
|
199
199
|
{sidebar_position: 0},
|
|
200
200
|
{sidebar_position: 5},
|
|
201
201
|
{sidebar_position: 3.5},
|
|
202
202
|
],
|
|
203
203
|
convertibleFrontMatter: [
|
|
204
|
+
[{sidebar_position: '-1.5'}, {sidebar_position: -1.5}],
|
|
204
205
|
[{sidebar_position: '1'}, {sidebar_position: 1}],
|
|
205
206
|
[{sidebar_position: '1.5'}, {sidebar_position: 1.5}],
|
|
206
207
|
],
|
|
207
|
-
invalidFrontMatters: [
|
|
208
|
-
[{sidebar_position: -1}, 'must be greater than or equal to 0'],
|
|
209
|
-
],
|
|
210
208
|
});
|
|
211
209
|
});
|
|
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
|
+
});
|