@docusaurus/plugin-content-docs 2.0.0-beta.0e652730d → 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
|
@@ -7,21 +7,29 @@
|
|
|
7
7
|
|
|
8
8
|
import path from 'path';
|
|
9
9
|
import {loadContext} from '@docusaurus/core/src/server/index';
|
|
10
|
-
import {processDocMetadata, readVersionDocs, readDocFile} from '../docs';
|
|
11
|
-
import {readVersionsMetadata} from '../versions';
|
|
12
10
|
import {
|
|
11
|
+
processDocMetadata,
|
|
12
|
+
readVersionDocs,
|
|
13
|
+
readDocFile,
|
|
14
|
+
addDocNavigation,
|
|
15
|
+
isConventionalDocIndex,
|
|
16
|
+
} from '../docs';
|
|
17
|
+
import {loadSidebars} from '../sidebars';
|
|
18
|
+
import {readVersionsMetadata} from '../versions';
|
|
19
|
+
import type {
|
|
13
20
|
DocFile,
|
|
14
21
|
DocMetadataBase,
|
|
15
22
|
MetadataOptions,
|
|
16
23
|
VersionMetadata,
|
|
17
24
|
PluginOptions,
|
|
18
25
|
EditUrlFunction,
|
|
26
|
+
DocNavLink,
|
|
19
27
|
} from '../types';
|
|
20
|
-
import {LoadContext} from '@docusaurus/types';
|
|
21
|
-
import {DEFAULT_PLUGIN_ID} from '@docusaurus/core/lib/constants';
|
|
28
|
+
import type {LoadContext} from '@docusaurus/types';
|
|
22
29
|
import {DEFAULT_OPTIONS} from '../options';
|
|
23
30
|
import {Optional} from 'utility-types';
|
|
24
|
-
import {posixPath} from '@docusaurus/utils';
|
|
31
|
+
import {createSlugger, posixPath, DEFAULT_PLUGIN_ID} from '@docusaurus/utils';
|
|
32
|
+
import {createSidebarsUtils} from '../sidebars/utils';
|
|
25
33
|
|
|
26
34
|
const fixtureDir = path.join(__dirname, '__fixtures__');
|
|
27
35
|
|
|
@@ -110,7 +118,41 @@ function createTestUtils({
|
|
|
110
118
|
expect(metadata.permalink).toEqual(expectedPermalink);
|
|
111
119
|
}
|
|
112
120
|
|
|
113
|
-
|
|
121
|
+
async function generateNavigation(
|
|
122
|
+
docFiles: DocFile[],
|
|
123
|
+
): Promise<[DocNavLink | undefined, DocNavLink | undefined][]> {
|
|
124
|
+
const rawDocs = await Promise.all(
|
|
125
|
+
docFiles.map((docFile) =>
|
|
126
|
+
processDocMetadata({
|
|
127
|
+
docFile,
|
|
128
|
+
versionMetadata,
|
|
129
|
+
context,
|
|
130
|
+
options,
|
|
131
|
+
}),
|
|
132
|
+
),
|
|
133
|
+
);
|
|
134
|
+
const sidebars = await loadSidebars(versionMetadata.sidebarFilePath, {
|
|
135
|
+
sidebarItemsGenerator: ({defaultSidebarItemsGenerator, ...args}) =>
|
|
136
|
+
defaultSidebarItemsGenerator({...args}),
|
|
137
|
+
numberPrefixParser: options.numberPrefixParser,
|
|
138
|
+
docs: rawDocs,
|
|
139
|
+
version: versionMetadata,
|
|
140
|
+
sidebarOptions: {
|
|
141
|
+
sidebarCollapsed: false,
|
|
142
|
+
sidebarCollapsible: true,
|
|
143
|
+
},
|
|
144
|
+
categoryLabelSlugger: createSlugger(),
|
|
145
|
+
});
|
|
146
|
+
const sidebarsUtils = createSidebarsUtils(sidebars);
|
|
147
|
+
|
|
148
|
+
return addDocNavigation(
|
|
149
|
+
rawDocs,
|
|
150
|
+
sidebarsUtils,
|
|
151
|
+
versionMetadata.sidebarFilePath as string,
|
|
152
|
+
).map((doc) => [doc.previous, doc.next]);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
return {processDocFile, testMeta, testSlug, generateNavigation};
|
|
114
156
|
}
|
|
115
157
|
|
|
116
158
|
describe('simple site', () => {
|
|
@@ -177,7 +219,6 @@ describe('simple site', () => {
|
|
|
177
219
|
id: 'foo/bar',
|
|
178
220
|
unversionedId: 'foo/bar',
|
|
179
221
|
sourceDirName: 'foo',
|
|
180
|
-
isDocsHomePage: false,
|
|
181
222
|
permalink: '/docs/foo/bar',
|
|
182
223
|
slug: '/foo/bar',
|
|
183
224
|
title: 'Bar',
|
|
@@ -187,43 +228,13 @@ describe('simple site', () => {
|
|
|
187
228
|
id: 'bar',
|
|
188
229
|
title: 'Bar',
|
|
189
230
|
},
|
|
231
|
+
tags: [],
|
|
190
232
|
});
|
|
191
233
|
await defaultTestUtils.testMeta(path.join('hello.md'), {
|
|
192
234
|
version: 'current',
|
|
193
235
|
id: 'hello',
|
|
194
236
|
unversionedId: 'hello',
|
|
195
237
|
sourceDirName: '.',
|
|
196
|
-
isDocsHomePage: false,
|
|
197
|
-
permalink: '/docs/hello',
|
|
198
|
-
slug: '/hello',
|
|
199
|
-
title: 'Hello, World !',
|
|
200
|
-
description: `Hi, Endilie here :)`,
|
|
201
|
-
frontMatter: {
|
|
202
|
-
id: 'hello',
|
|
203
|
-
title: 'Hello, World !',
|
|
204
|
-
sidebar_label: 'Hello sidebar_label',
|
|
205
|
-
},
|
|
206
|
-
});
|
|
207
|
-
});
|
|
208
|
-
|
|
209
|
-
test('homePageId doc', async () => {
|
|
210
|
-
const {siteDir, context, options, currentVersion} = await loadSite({
|
|
211
|
-
options: {homePageId: 'hello'},
|
|
212
|
-
});
|
|
213
|
-
|
|
214
|
-
const testUtilsLocal = createTestUtils({
|
|
215
|
-
siteDir,
|
|
216
|
-
context,
|
|
217
|
-
options,
|
|
218
|
-
versionMetadata: currentVersion,
|
|
219
|
-
});
|
|
220
|
-
|
|
221
|
-
await testUtilsLocal.testMeta(path.join('hello.md'), {
|
|
222
|
-
version: 'current',
|
|
223
|
-
id: 'hello',
|
|
224
|
-
unversionedId: 'hello',
|
|
225
|
-
sourceDirName: '.',
|
|
226
|
-
isDocsHomePage: true,
|
|
227
238
|
permalink: '/docs/',
|
|
228
239
|
slug: '/',
|
|
229
240
|
title: 'Hello, World !',
|
|
@@ -232,44 +243,26 @@ describe('simple site', () => {
|
|
|
232
243
|
id: 'hello',
|
|
233
244
|
title: 'Hello, World !',
|
|
234
245
|
sidebar_label: 'Hello sidebar_label',
|
|
246
|
+
slug: '/',
|
|
247
|
+
tags: ['tag-1', 'tag 3'],
|
|
235
248
|
},
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
context,
|
|
247
|
-
options,
|
|
248
|
-
versionMetadata: currentVersion,
|
|
249
|
-
});
|
|
250
|
-
|
|
251
|
-
await testUtilsLocal.testMeta(path.join('foo', 'bar.md'), {
|
|
252
|
-
version: 'current',
|
|
253
|
-
id: 'foo/bar',
|
|
254
|
-
unversionedId: 'foo/bar',
|
|
255
|
-
sourceDirName: 'foo',
|
|
256
|
-
isDocsHomePage: true,
|
|
257
|
-
permalink: '/docs/',
|
|
258
|
-
slug: '/',
|
|
259
|
-
title: 'Bar',
|
|
260
|
-
description: 'This is custom description',
|
|
261
|
-
frontMatter: {
|
|
262
|
-
description: 'This is custom description',
|
|
263
|
-
id: 'bar',
|
|
264
|
-
title: 'Bar',
|
|
265
|
-
},
|
|
249
|
+
tags: [
|
|
250
|
+
{
|
|
251
|
+
label: 'tag-1',
|
|
252
|
+
permalink: '/docs/tags/tag-1',
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
label: 'tag 3',
|
|
256
|
+
permalink: '/docs/tags/tag-3',
|
|
257
|
+
},
|
|
258
|
+
],
|
|
266
259
|
});
|
|
267
260
|
});
|
|
268
261
|
|
|
269
262
|
test('docs with editUrl', async () => {
|
|
270
263
|
const {siteDir, context, options, currentVersion} = await loadSite({
|
|
271
264
|
options: {
|
|
272
|
-
editUrl: 'https://github.com/facebook/docusaurus/edit/
|
|
265
|
+
editUrl: 'https://github.com/facebook/docusaurus/edit/main/website',
|
|
273
266
|
},
|
|
274
267
|
});
|
|
275
268
|
|
|
@@ -285,19 +278,33 @@ describe('simple site', () => {
|
|
|
285
278
|
id: 'foo/baz',
|
|
286
279
|
unversionedId: 'foo/baz',
|
|
287
280
|
sourceDirName: 'foo',
|
|
288
|
-
isDocsHomePage: false,
|
|
289
281
|
permalink: '/docs/foo/bazSlug.html',
|
|
290
282
|
slug: '/foo/bazSlug.html',
|
|
291
283
|
title: 'baz',
|
|
292
284
|
editUrl:
|
|
293
|
-
'https://github.com/facebook/docusaurus/edit/
|
|
285
|
+
'https://github.com/facebook/docusaurus/edit/main/website/docs/foo/baz.md',
|
|
294
286
|
description: 'Images',
|
|
295
287
|
frontMatter: {
|
|
296
288
|
id: 'baz',
|
|
297
289
|
slug: 'bazSlug.html',
|
|
298
290
|
title: 'baz',
|
|
299
291
|
pagination_label: 'baz pagination_label',
|
|
292
|
+
tags: [
|
|
293
|
+
'tag 1',
|
|
294
|
+
'tag-1',
|
|
295
|
+
{label: 'tag 2', permalink: 'tag2-custom-permalink'},
|
|
296
|
+
],
|
|
300
297
|
},
|
|
298
|
+
tags: [
|
|
299
|
+
{
|
|
300
|
+
label: 'tag 1',
|
|
301
|
+
permalink: '/docs/tags/tag-1',
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
label: 'tag 2',
|
|
305
|
+
permalink: '/docs/tags/tag2-custom-permalink',
|
|
306
|
+
},
|
|
307
|
+
],
|
|
301
308
|
});
|
|
302
309
|
});
|
|
303
310
|
|
|
@@ -309,7 +316,6 @@ describe('simple site', () => {
|
|
|
309
316
|
id: 'lorem',
|
|
310
317
|
unversionedId: 'lorem',
|
|
311
318
|
sourceDirName: '.',
|
|
312
|
-
isDocsHomePage: false,
|
|
313
319
|
permalink: '/docs/lorem',
|
|
314
320
|
slug: '/lorem',
|
|
315
321
|
title: 'lorem',
|
|
@@ -319,6 +325,7 @@ describe('simple site', () => {
|
|
|
319
325
|
custom_edit_url: 'https://github.com/customUrl/docs/lorem.md',
|
|
320
326
|
unrelated_frontmatter: "won't be part of metadata",
|
|
321
327
|
},
|
|
328
|
+
tags: [],
|
|
322
329
|
});
|
|
323
330
|
});
|
|
324
331
|
|
|
@@ -345,7 +352,6 @@ describe('simple site', () => {
|
|
|
345
352
|
id: 'foo/baz',
|
|
346
353
|
unversionedId: 'foo/baz',
|
|
347
354
|
sourceDirName: 'foo',
|
|
348
|
-
isDocsHomePage: false,
|
|
349
355
|
permalink: '/docs/foo/bazSlug.html',
|
|
350
356
|
slug: '/foo/bazSlug.html',
|
|
351
357
|
title: 'baz',
|
|
@@ -356,7 +362,22 @@ describe('simple site', () => {
|
|
|
356
362
|
slug: 'bazSlug.html',
|
|
357
363
|
title: 'baz',
|
|
358
364
|
pagination_label: 'baz pagination_label',
|
|
365
|
+
tags: [
|
|
366
|
+
'tag 1',
|
|
367
|
+
'tag-1',
|
|
368
|
+
{label: 'tag 2', permalink: 'tag2-custom-permalink'},
|
|
369
|
+
],
|
|
359
370
|
},
|
|
371
|
+
tags: [
|
|
372
|
+
{
|
|
373
|
+
label: 'tag 1',
|
|
374
|
+
permalink: '/docs/tags/tag-1',
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
label: 'tag 2',
|
|
378
|
+
permalink: '/docs/tags/tag2-custom-permalink',
|
|
379
|
+
},
|
|
380
|
+
],
|
|
360
381
|
});
|
|
361
382
|
|
|
362
383
|
expect(editUrlFunction).toHaveBeenCalledTimes(1);
|
|
@@ -389,7 +410,6 @@ describe('simple site', () => {
|
|
|
389
410
|
id: 'lorem',
|
|
390
411
|
unversionedId: 'lorem',
|
|
391
412
|
sourceDirName: '.',
|
|
392
|
-
isDocsHomePage: false,
|
|
393
413
|
permalink: '/docs/lorem',
|
|
394
414
|
slug: '/lorem',
|
|
395
415
|
title: 'lorem',
|
|
@@ -402,6 +422,7 @@ describe('simple site', () => {
|
|
|
402
422
|
lastUpdatedAt: 1539502055,
|
|
403
423
|
formattedLastUpdatedAt: '10/14/2018',
|
|
404
424
|
lastUpdatedBy: 'Author',
|
|
425
|
+
tags: [],
|
|
405
426
|
});
|
|
406
427
|
});
|
|
407
428
|
|
|
@@ -459,30 +480,25 @@ describe('simple site', () => {
|
|
|
459
480
|
);
|
|
460
481
|
});
|
|
461
482
|
|
|
462
|
-
test('
|
|
463
|
-
const {
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
});
|
|
483
|
+
test('custom pagination', async () => {
|
|
484
|
+
const {defaultTestUtils, options, versionsMetadata} = await loadSite();
|
|
485
|
+
const docs = await readVersionDocs(versionsMetadata[0], options);
|
|
486
|
+
expect(await defaultTestUtils.generateNavigation(docs)).toMatchSnapshot();
|
|
487
|
+
});
|
|
468
488
|
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
}),
|
|
483
|
-
);
|
|
484
|
-
}).toThrowErrorMatchingInlineSnapshot(
|
|
485
|
-
`"The docs homepage (homePageId=homePageId) is not allowed to have a frontmatter slug=/x/y => you have to choose either homePageId or slug, not both"`,
|
|
489
|
+
test('bad pagination', async () => {
|
|
490
|
+
const {defaultTestUtils, options, versionsMetadata} = await loadSite();
|
|
491
|
+
const docs = await readVersionDocs(versionsMetadata[0], options);
|
|
492
|
+
docs.push(
|
|
493
|
+
createFakeDocFile({
|
|
494
|
+
source: 'hehe',
|
|
495
|
+
frontmatter: {pagination_prev: 'nonexistent'},
|
|
496
|
+
}),
|
|
497
|
+
);
|
|
498
|
+
await expect(async () => {
|
|
499
|
+
await defaultTestUtils.generateNavigation(docs);
|
|
500
|
+
}).rejects.toThrowErrorMatchingInlineSnapshot(
|
|
501
|
+
`"Error when loading hehe in .: the pagination_prev front matter points to a non-existent ID nonexistent."`,
|
|
486
502
|
);
|
|
487
503
|
});
|
|
488
504
|
});
|
|
@@ -507,12 +523,8 @@ describe('versioned site', () => {
|
|
|
507
523
|
options,
|
|
508
524
|
});
|
|
509
525
|
expect(versionsMetadata.length).toEqual(4);
|
|
510
|
-
const [
|
|
511
|
-
|
|
512
|
-
version101,
|
|
513
|
-
version100,
|
|
514
|
-
versionWithSlugs,
|
|
515
|
-
] = versionsMetadata;
|
|
526
|
+
const [currentVersion, version101, version100, versionWithSlugs] =
|
|
527
|
+
versionsMetadata;
|
|
516
528
|
|
|
517
529
|
const currentVersionTestUtils = createTestUtils({
|
|
518
530
|
siteDir,
|
|
@@ -559,27 +571,52 @@ describe('versioned site', () => {
|
|
|
559
571
|
|
|
560
572
|
await currentVersionTestUtils.testMeta(path.join('foo', 'bar.md'), {
|
|
561
573
|
id: 'foo/bar',
|
|
574
|
+
version: 'current',
|
|
562
575
|
unversionedId: 'foo/bar',
|
|
563
576
|
sourceDirName: 'foo',
|
|
564
|
-
isDocsHomePage: false,
|
|
565
577
|
permalink: '/docs/next/foo/barSlug',
|
|
566
578
|
slug: '/foo/barSlug',
|
|
567
579
|
title: 'bar',
|
|
568
580
|
description: 'This is next version of bar.',
|
|
569
|
-
frontMatter: {
|
|
570
|
-
|
|
581
|
+
frontMatter: {
|
|
582
|
+
slug: 'barSlug',
|
|
583
|
+
tags: [
|
|
584
|
+
'barTag 1',
|
|
585
|
+
'barTag-2',
|
|
586
|
+
{
|
|
587
|
+
label: 'barTag 3',
|
|
588
|
+
permalink: 'barTag-3-permalink',
|
|
589
|
+
},
|
|
590
|
+
],
|
|
591
|
+
},
|
|
592
|
+
tags: [
|
|
593
|
+
{
|
|
594
|
+
label: 'barTag 1',
|
|
595
|
+
permalink: '/docs/next/tags/bar-tag-1',
|
|
596
|
+
},
|
|
597
|
+
{
|
|
598
|
+
label: 'barTag-2',
|
|
599
|
+
permalink: '/docs/next/tags/bar-tag-2',
|
|
600
|
+
},
|
|
601
|
+
{
|
|
602
|
+
label: 'barTag 3',
|
|
603
|
+
permalink: '/docs/next/tags/barTag-3-permalink',
|
|
604
|
+
},
|
|
605
|
+
],
|
|
571
606
|
});
|
|
572
607
|
await currentVersionTestUtils.testMeta(path.join('hello.md'), {
|
|
573
608
|
id: 'hello',
|
|
609
|
+
version: 'current',
|
|
574
610
|
unversionedId: 'hello',
|
|
575
611
|
sourceDirName: '.',
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
slug: '/hello',
|
|
612
|
+
permalink: '/docs/next/',
|
|
613
|
+
slug: '/',
|
|
579
614
|
title: 'hello',
|
|
580
615
|
description: 'Hello next !',
|
|
581
|
-
frontMatter: {
|
|
582
|
-
|
|
616
|
+
frontMatter: {
|
|
617
|
+
slug: '/',
|
|
618
|
+
},
|
|
619
|
+
tags: [],
|
|
583
620
|
});
|
|
584
621
|
});
|
|
585
622
|
|
|
@@ -590,51 +627,55 @@ describe('versioned site', () => {
|
|
|
590
627
|
id: 'version-1.0.0/foo/bar',
|
|
591
628
|
unversionedId: 'foo/bar',
|
|
592
629
|
sourceDirName: 'foo',
|
|
593
|
-
isDocsHomePage: false,
|
|
594
630
|
permalink: '/docs/1.0.0/foo/barSlug',
|
|
595
631
|
slug: '/foo/barSlug',
|
|
596
632
|
title: 'bar',
|
|
597
633
|
description: 'Bar 1.0.0 !',
|
|
598
634
|
frontMatter: {slug: 'barSlug'},
|
|
599
635
|
version: '1.0.0',
|
|
636
|
+
tags: [],
|
|
600
637
|
});
|
|
601
638
|
await version100TestUtils.testMeta(path.join('hello.md'), {
|
|
602
639
|
id: 'version-1.0.0/hello',
|
|
603
640
|
unversionedId: 'hello',
|
|
604
641
|
sourceDirName: '.',
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
slug: '/hello',
|
|
642
|
+
permalink: '/docs/1.0.0/',
|
|
643
|
+
slug: '/',
|
|
608
644
|
title: 'hello',
|
|
609
645
|
description: 'Hello 1.0.0 ! (translated en)',
|
|
610
|
-
frontMatter: {
|
|
646
|
+
frontMatter: {
|
|
647
|
+
slug: '/',
|
|
648
|
+
},
|
|
611
649
|
version: '1.0.0',
|
|
612
650
|
source:
|
|
613
651
|
'@site/i18n/en/docusaurus-plugin-content-docs/version-1.0.0/hello.md',
|
|
652
|
+
tags: [],
|
|
614
653
|
});
|
|
615
654
|
await version101TestUtils.testMeta(path.join('foo', 'bar.md'), {
|
|
616
655
|
id: 'version-1.0.1/foo/bar',
|
|
617
656
|
unversionedId: 'foo/bar',
|
|
618
657
|
sourceDirName: 'foo',
|
|
619
|
-
isDocsHomePage: false,
|
|
620
658
|
permalink: '/docs/foo/bar',
|
|
621
659
|
slug: '/foo/bar',
|
|
622
660
|
title: 'bar',
|
|
623
661
|
description: 'Bar 1.0.1 !',
|
|
624
662
|
version: '1.0.1',
|
|
625
663
|
frontMatter: {},
|
|
664
|
+
tags: [],
|
|
626
665
|
});
|
|
627
666
|
await version101TestUtils.testMeta(path.join('hello.md'), {
|
|
628
667
|
id: 'version-1.0.1/hello',
|
|
629
668
|
unversionedId: 'hello',
|
|
630
669
|
sourceDirName: '.',
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
slug: '/hello',
|
|
670
|
+
permalink: '/docs/',
|
|
671
|
+
slug: '/',
|
|
634
672
|
title: 'hello',
|
|
635
673
|
description: 'Hello 1.0.1 !',
|
|
636
674
|
version: '1.0.1',
|
|
637
|
-
frontMatter: {
|
|
675
|
+
frontMatter: {
|
|
676
|
+
slug: '/',
|
|
677
|
+
},
|
|
678
|
+
tags: [],
|
|
638
679
|
});
|
|
639
680
|
});
|
|
640
681
|
|
|
@@ -719,16 +760,18 @@ describe('versioned site', () => {
|
|
|
719
760
|
id: 'version-1.0.0/hello',
|
|
720
761
|
unversionedId: 'hello',
|
|
721
762
|
sourceDirName: '.',
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
slug: '/hello',
|
|
763
|
+
permalink: '/docs/1.0.0/',
|
|
764
|
+
slug: '/',
|
|
725
765
|
title: 'hello',
|
|
726
766
|
description: 'Hello 1.0.0 ! (translated en)',
|
|
727
|
-
frontMatter: {
|
|
767
|
+
frontMatter: {
|
|
768
|
+
slug: '/',
|
|
769
|
+
},
|
|
728
770
|
version: '1.0.0',
|
|
729
771
|
source:
|
|
730
772
|
'@site/i18n/en/docusaurus-plugin-content-docs/version-1.0.0/hello.md',
|
|
731
773
|
editUrl: hardcodedEditUrl,
|
|
774
|
+
tags: [],
|
|
732
775
|
});
|
|
733
776
|
|
|
734
777
|
expect(editUrlFunction).toHaveBeenCalledTimes(1);
|
|
@@ -736,7 +779,7 @@ describe('versioned site', () => {
|
|
|
736
779
|
version: '1.0.0',
|
|
737
780
|
versionDocsDirPath: 'versioned_docs/version-1.0.0',
|
|
738
781
|
docPath: path.join('hello.md'),
|
|
739
|
-
permalink: '/docs/1.0.0/
|
|
782
|
+
permalink: '/docs/1.0.0/',
|
|
740
783
|
locale: 'en',
|
|
741
784
|
});
|
|
742
785
|
});
|
|
@@ -744,7 +787,7 @@ describe('versioned site', () => {
|
|
|
744
787
|
test('translated doc with editUrl', async () => {
|
|
745
788
|
const {siteDir, context, options, version100} = await loadSite({
|
|
746
789
|
options: {
|
|
747
|
-
editUrl: 'https://github.com/facebook/docusaurus/edit/
|
|
790
|
+
editUrl: 'https://github.com/facebook/docusaurus/edit/main/website',
|
|
748
791
|
// editCurrentVersion: true,
|
|
749
792
|
},
|
|
750
793
|
});
|
|
@@ -760,24 +803,26 @@ describe('versioned site', () => {
|
|
|
760
803
|
id: 'version-1.0.0/hello',
|
|
761
804
|
unversionedId: 'hello',
|
|
762
805
|
sourceDirName: '.',
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
slug: '/hello',
|
|
806
|
+
permalink: '/docs/1.0.0/',
|
|
807
|
+
slug: '/',
|
|
766
808
|
title: 'hello',
|
|
767
809
|
description: 'Hello 1.0.0 ! (translated en)',
|
|
768
|
-
frontMatter: {
|
|
810
|
+
frontMatter: {
|
|
811
|
+
slug: '/',
|
|
812
|
+
},
|
|
769
813
|
version: '1.0.0',
|
|
770
814
|
source:
|
|
771
815
|
'@site/i18n/en/docusaurus-plugin-content-docs/version-1.0.0/hello.md',
|
|
772
816
|
editUrl:
|
|
773
|
-
'https://github.com/facebook/docusaurus/edit/
|
|
817
|
+
'https://github.com/facebook/docusaurus/edit/main/website/versioned_docs/version-1.0.0/hello.md',
|
|
818
|
+
tags: [],
|
|
774
819
|
});
|
|
775
820
|
});
|
|
776
821
|
|
|
777
822
|
test('translated en doc with editUrl and editCurrentVersion=true', async () => {
|
|
778
823
|
const {siteDir, context, options, version100} = await loadSite({
|
|
779
824
|
options: {
|
|
780
|
-
editUrl: 'https://github.com/facebook/docusaurus/edit/
|
|
825
|
+
editUrl: 'https://github.com/facebook/docusaurus/edit/main/website',
|
|
781
826
|
editCurrentVersion: true,
|
|
782
827
|
},
|
|
783
828
|
});
|
|
@@ -793,24 +838,26 @@ describe('versioned site', () => {
|
|
|
793
838
|
id: 'version-1.0.0/hello',
|
|
794
839
|
unversionedId: 'hello',
|
|
795
840
|
sourceDirName: '.',
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
slug: '/hello',
|
|
841
|
+
permalink: '/docs/1.0.0/',
|
|
842
|
+
slug: '/',
|
|
799
843
|
title: 'hello',
|
|
800
844
|
description: 'Hello 1.0.0 ! (translated en)',
|
|
801
|
-
frontMatter: {
|
|
845
|
+
frontMatter: {
|
|
846
|
+
slug: '/',
|
|
847
|
+
},
|
|
802
848
|
version: '1.0.0',
|
|
803
849
|
source:
|
|
804
850
|
'@site/i18n/en/docusaurus-plugin-content-docs/version-1.0.0/hello.md',
|
|
805
851
|
editUrl:
|
|
806
|
-
'https://github.com/facebook/docusaurus/edit/
|
|
852
|
+
'https://github.com/facebook/docusaurus/edit/main/website/docs/hello.md',
|
|
853
|
+
tags: [],
|
|
807
854
|
});
|
|
808
855
|
});
|
|
809
856
|
|
|
810
857
|
test('translated fr doc with editUrl and editLocalizedFiles=true', async () => {
|
|
811
858
|
const {siteDir, context, options, version100} = await loadSite({
|
|
812
859
|
options: {
|
|
813
|
-
editUrl: 'https://github.com/facebook/docusaurus/edit/
|
|
860
|
+
editUrl: 'https://github.com/facebook/docusaurus/edit/main/website',
|
|
814
861
|
editLocalizedFiles: true,
|
|
815
862
|
},
|
|
816
863
|
locale: 'fr',
|
|
@@ -827,24 +874,26 @@ describe('versioned site', () => {
|
|
|
827
874
|
id: 'version-1.0.0/hello',
|
|
828
875
|
unversionedId: 'hello',
|
|
829
876
|
sourceDirName: '.',
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
slug: '/hello',
|
|
877
|
+
permalink: '/fr/docs/1.0.0/',
|
|
878
|
+
slug: '/',
|
|
833
879
|
title: 'hello',
|
|
834
880
|
description: 'Hello 1.0.0 ! (translated fr)',
|
|
835
|
-
frontMatter: {
|
|
881
|
+
frontMatter: {
|
|
882
|
+
slug: '/',
|
|
883
|
+
},
|
|
836
884
|
version: '1.0.0',
|
|
837
885
|
source:
|
|
838
886
|
'@site/i18n/fr/docusaurus-plugin-content-docs/version-1.0.0/hello.md',
|
|
839
887
|
editUrl:
|
|
840
|
-
'https://github.com/facebook/docusaurus/edit/
|
|
888
|
+
'https://github.com/facebook/docusaurus/edit/main/website/i18n/fr/docusaurus-plugin-content-docs/version-1.0.0/hello.md',
|
|
889
|
+
tags: [],
|
|
841
890
|
});
|
|
842
891
|
});
|
|
843
892
|
|
|
844
893
|
test('translated fr doc with editUrl and editLocalizedFiles=true + editCurrentVersion=true', async () => {
|
|
845
894
|
const {siteDir, context, options, version100} = await loadSite({
|
|
846
895
|
options: {
|
|
847
|
-
editUrl: 'https://github.com/facebook/docusaurus/edit/
|
|
896
|
+
editUrl: 'https://github.com/facebook/docusaurus/edit/main/website',
|
|
848
897
|
editCurrentVersion: true,
|
|
849
898
|
editLocalizedFiles: true,
|
|
850
899
|
},
|
|
@@ -862,17 +911,129 @@ describe('versioned site', () => {
|
|
|
862
911
|
id: 'version-1.0.0/hello',
|
|
863
912
|
unversionedId: 'hello',
|
|
864
913
|
sourceDirName: '.',
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
slug: '/hello',
|
|
914
|
+
permalink: '/fr/docs/1.0.0/',
|
|
915
|
+
slug: '/',
|
|
868
916
|
title: 'hello',
|
|
869
917
|
description: 'Hello 1.0.0 ! (translated fr)',
|
|
870
|
-
frontMatter: {
|
|
918
|
+
frontMatter: {
|
|
919
|
+
slug: '/',
|
|
920
|
+
},
|
|
871
921
|
version: '1.0.0',
|
|
872
922
|
source:
|
|
873
923
|
'@site/i18n/fr/docusaurus-plugin-content-docs/version-1.0.0/hello.md',
|
|
874
924
|
editUrl:
|
|
875
|
-
'https://github.com/facebook/docusaurus/edit/
|
|
925
|
+
'https://github.com/facebook/docusaurus/edit/main/website/i18n/fr/docusaurus-plugin-content-docs/current/hello.md',
|
|
926
|
+
tags: [],
|
|
876
927
|
});
|
|
877
928
|
});
|
|
878
929
|
});
|
|
930
|
+
|
|
931
|
+
describe('isConventionalDocIndex', () => {
|
|
932
|
+
test('supports readme', () => {
|
|
933
|
+
expect(
|
|
934
|
+
isConventionalDocIndex({
|
|
935
|
+
sourceDirName: 'doesNotMatter',
|
|
936
|
+
source: 'readme.md',
|
|
937
|
+
}),
|
|
938
|
+
).toEqual(true);
|
|
939
|
+
expect(
|
|
940
|
+
isConventionalDocIndex({
|
|
941
|
+
sourceDirName: 'doesNotMatter',
|
|
942
|
+
source: 'readme.mdx',
|
|
943
|
+
}),
|
|
944
|
+
).toEqual(true);
|
|
945
|
+
expect(
|
|
946
|
+
isConventionalDocIndex({
|
|
947
|
+
sourceDirName: 'doesNotMatter',
|
|
948
|
+
source: 'README.md',
|
|
949
|
+
}),
|
|
950
|
+
).toEqual(true);
|
|
951
|
+
expect(
|
|
952
|
+
isConventionalDocIndex({
|
|
953
|
+
sourceDirName: 'doesNotMatter',
|
|
954
|
+
source: 'parent/ReAdMe',
|
|
955
|
+
}),
|
|
956
|
+
).toEqual(true);
|
|
957
|
+
});
|
|
958
|
+
|
|
959
|
+
test('supports index', () => {
|
|
960
|
+
expect(
|
|
961
|
+
isConventionalDocIndex({
|
|
962
|
+
sourceDirName: 'doesNotMatter',
|
|
963
|
+
source: 'index.md',
|
|
964
|
+
}),
|
|
965
|
+
).toEqual(true);
|
|
966
|
+
expect(
|
|
967
|
+
isConventionalDocIndex({
|
|
968
|
+
sourceDirName: 'doesNotMatter',
|
|
969
|
+
source: 'index.mdx',
|
|
970
|
+
}),
|
|
971
|
+
).toEqual(true);
|
|
972
|
+
expect(
|
|
973
|
+
isConventionalDocIndex({
|
|
974
|
+
sourceDirName: 'doesNotMatter',
|
|
975
|
+
source: 'INDEX.md',
|
|
976
|
+
}),
|
|
977
|
+
).toEqual(true);
|
|
978
|
+
expect(
|
|
979
|
+
isConventionalDocIndex({
|
|
980
|
+
sourceDirName: 'doesNotMatter',
|
|
981
|
+
source: 'parent/InDeX',
|
|
982
|
+
}),
|
|
983
|
+
).toEqual(true);
|
|
984
|
+
});
|
|
985
|
+
|
|
986
|
+
test('supports <categoryName>/<categoryName>.md', () => {
|
|
987
|
+
expect(
|
|
988
|
+
isConventionalDocIndex({
|
|
989
|
+
sourceDirName: 'someCategory',
|
|
990
|
+
source: 'someCategory',
|
|
991
|
+
}),
|
|
992
|
+
).toEqual(true);
|
|
993
|
+
expect(
|
|
994
|
+
isConventionalDocIndex({
|
|
995
|
+
sourceDirName: 'someCategory',
|
|
996
|
+
source: 'someCategory.md',
|
|
997
|
+
}),
|
|
998
|
+
).toEqual(true);
|
|
999
|
+
expect(
|
|
1000
|
+
isConventionalDocIndex({
|
|
1001
|
+
sourceDirName: 'someCategory',
|
|
1002
|
+
source: 'someCategory.mdx',
|
|
1003
|
+
}),
|
|
1004
|
+
).toEqual(true);
|
|
1005
|
+
expect(
|
|
1006
|
+
isConventionalDocIndex({
|
|
1007
|
+
sourceDirName: 'some_category',
|
|
1008
|
+
source: 'SOME_CATEGORY.md',
|
|
1009
|
+
}),
|
|
1010
|
+
).toEqual(true);
|
|
1011
|
+
expect(
|
|
1012
|
+
isConventionalDocIndex({
|
|
1013
|
+
sourceDirName: 'some_category',
|
|
1014
|
+
source: 'parent/some_category',
|
|
1015
|
+
}),
|
|
1016
|
+
).toEqual(true);
|
|
1017
|
+
});
|
|
1018
|
+
|
|
1019
|
+
test('reject other cases', () => {
|
|
1020
|
+
expect(
|
|
1021
|
+
isConventionalDocIndex({
|
|
1022
|
+
sourceDirName: 'someCategory',
|
|
1023
|
+
source: 'some_Category',
|
|
1024
|
+
}),
|
|
1025
|
+
).toEqual(false);
|
|
1026
|
+
expect(
|
|
1027
|
+
isConventionalDocIndex({
|
|
1028
|
+
sourceDirName: 'doesNotMatter',
|
|
1029
|
+
source: 'read_me',
|
|
1030
|
+
}),
|
|
1031
|
+
).toEqual(false);
|
|
1032
|
+
expect(
|
|
1033
|
+
isConventionalDocIndex({
|
|
1034
|
+
sourceDirName: 'doesNotMatter',
|
|
1035
|
+
source: 'the index',
|
|
1036
|
+
}),
|
|
1037
|
+
).toEqual(false);
|
|
1038
|
+
});
|
|
1039
|
+
});
|