-
-
Notifications
You must be signed in to change notification settings - Fork 32.1k
/
versions.js
80 lines (71 loc) · 2.17 KB
/
versions.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import * as React from 'react';
import sortedUniqBy from 'lodash/sortedUniqBy';
import MarkdownDocs from 'docs/src/modules/components/MarkdownDocs';
import VersionsContext from 'docs/src/pages/versions/VersionsContext';
import * as pageProps from 'docs/src/pages/versions/versions.md?muiMarkdown';
export default function Page(props) {
const { versions } = props;
return (
<VersionsContext.Provider value={versions}>
<MarkdownDocs {...pageProps} />
</VersionsContext.Provider>
);
}
function formatVersion(version) {
return version
.replace('v', '')
.split('.')
.map((n) => +n + 1000)
.join('.');
}
async function getBranches() {
const result = await fetch('https://api.github.com/repos/mui/material-ui-docs/branches', {
headers: {
Authorization: process.env.GITHUB_AUTH,
},
});
const text = await result.text();
if (result.status !== 200) {
throw new Error(text);
}
return JSON.parse(text);
}
Page.getInitialProps = async () => {
const FILTERED_BRANCHES = ['latest', 'l10n', 'next', 'migration', 'material-ui.com'];
const branches = await getBranches();
/**
* @type {import('docs/src/pages/versions/VersionsContext').VersionsContextValue}
*/
const versions = [];
branches.forEach((branch) => {
if (FILTERED_BRANCHES.indexOf(branch.name) === -1) {
const version = branch.name;
versions.push({
version,
// Replace dot with dashes for Netlify branch subdomains
url: `https://${version.replace(/\./g, '-')}.mui.com`,
});
}
});
// Current version.
versions.push({
version: `v${process.env.LIB_VERSION}`,
url: 'https://mui.com',
});
// Legacy documentation.
versions.push({
version: 'v0',
url: 'https://v0.mui.com',
});
versions.sort((a, b) => formatVersion(b.version).localeCompare(formatVersion(a.version)));
if (
branches.find((branch) => branch.name === 'next') &&
!versions.find((version) => /beta|alpha/.test(version.version))
) {
versions.unshift({
version: `v${Number(versions[0].version[1]) + 1} pre-release`,
url: 'https://next.mui.com',
});
}
return { versions: sortedUniqBy(versions, 'version') };
};