Skip to content

chore: consolidate Node releases data #5365

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 69 commits into from
Jun 17, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
5f5ab77
chore: update fields' name
HinataKah0 May 12, 2023
b0f46bd
chore: add script to generate Node releases data
HinataKah0 May 12, 2023
2d2ee36
chore: add Node releases data provider and hooks
HinataKah0 May 12, 2023
e6153f8
chore: add fields from NodeVersionData
HinataKah0 May 13, 2023
fa1ddf3
chore: replace NodeVersionData usages
HinataKah0 May 13, 2023
781db1e
chore: add files to .prettierignore
HinataKah0 May 14, 2023
547b5b7
chore: add Node releases data fixture
HinataKah0 May 14, 2023
bcdc6c7
refactor: change to inline conditional rendering
HinataKah0 May 15, 2023
4d30e84
chore: don't fallback to current if LTS is undefined
HinataKah0 May 15, 2023
5fd3e76
chore: remove redundant entries from fixture
HinataKah0 May 16, 2023
7bf0e3a
refactor: rename hook to useFetchNodeReleasesData
HinataKah0 May 16, 2023
04cd45c
refactor: don't store if return immediately
HinataKah0 May 16, 2023
a6b816b
refactor: remove redundant context in names
HinataKah0 May 16, 2023
a878965
refactor: remove HomeDownloadButtonProps
HinataKah0 May 16, 2023
78c607b
Merge branch 'main' into chore/node-release-data-server-side
May 19, 2023
d6087ea
refactor: simplify useNodeReleasesData hooks
HinataKah0 May 21, 2023
ef7c226
refactor: extract getNodeReleaseStatus to util
HinataKah0 May 21, 2023
3e09174
Merge branch 'main' into chore/node-release-data-server-side
ovflowd May 21, 2023
31640d3
chore: add versionWithPrefix to NodeReleaseData
HinataKah0 May 22, 2023
cbb255a
refactor: move fetch hook call to be inside provider
HinataKah0 May 22, 2023
b0742ac
refactor: move out __dirname and path
HinataKah0 May 22, 2023
4e86cd5
chore: handle undefined lts and current
HinataKah0 May 22, 2023
b397104
refactor: no need to assign variable
HinataKah0 May 22, 2023
305158c
refactor: move context type to be inside provider
HinataKah0 May 22, 2023
013d7ea
refactor: introduce NodeReleaseStatus type
HinataKah0 May 22, 2023
4e740e1
refactor: no need to declare empty props
HinataKah0 May 22, 2023
5940988
chore: do not block when generating node releases data
HinataKah0 May 22, 2023
0646d6a
refactor: clean up constants.ts
HinataKah0 May 24, 2023
a29cfa9
refactor: remove unnecessary 'Data' suffix
HinataKah0 May 24, 2023
5cc0831
chore: update nodevu
HinataKah0 May 24, 2023
7a170ae
chore: remove hack
HinataKah0 May 24, 2023
633da4e
refactor: make inline
HinataKah0 May 24, 2023
a6af748
chore: specify default value
HinataKah0 May 24, 2023
a391941
refactor: rework how to use useNodeReleases hook
HinataKah0 May 24, 2023
4384f45
refactor: reorder providers
HinataKah0 May 24, 2023
008fee9
chore: skip duplicate v0.x
HinataKah0 May 24, 2023
a7757a2
refactor: introduce NodeReleaseSupport type
HinataKah0 May 29, 2023
1df5780
Merge remote-tracking branch 'upstream/main' into chore/node-release-…
HinataKah0 May 29, 2023
01e7a36
refactor: remove excessive spaces
HinataKah0 May 29, 2023
06673e3
refactor: fix imports
HinataKah0 May 29, 2023
d9dda20
chore: no need to ignore _app.mdx
HinataKah0 May 29, 2023
27e003f
chore: move out of static/ folder
HinataKah0 May 30, 2023
da33e8b
refactor: use prettier syntax
HinataKah0 May 30, 2023
4a1008f
refactor: simplify generateNodeReleasesData
HinataKah0 May 31, 2023
f89d2c1
refactor: introduce WithNodeRelease component
HinataKah0 Jun 3, 2023
085f32b
Merge remote-tracking branch 'upstream/main' into chore/node-release-…
HinataKah0 Jun 3, 2023
90410a4
chore: fix filter
HinataKah0 Jun 4, 2023
d3110ce
refactor: introduce NodeReleaseJSON type
HinataKah0 Jun 4, 2023
946c3f8
refactor: move getReleaseByStatus function to useNodeReleases hook
HinataKah0 Jun 5, 2023
d3aad0f
refactor: add empty line
HinataKah0 Jun 5, 2023
d59324f
refactor: rename generateNodeReleasesData
HinataKah0 Jun 5, 2023
b5b81d9
refactor: add next-data/index.mjs
HinataKah0 Jun 5, 2023
978dcc1
chore: change to use useRouter hook
HinataKah0 Jun 5, 2023
22c8509
chore: update nodeReleases fixture
HinataKah0 Jun 5, 2023
03d24bb
refactor: rename props to staticProps
HinataKah0 Jun 5, 2023
c65c210
refactor: move WithNodeRelease to providers
HinataKah0 Jun 6, 2023
b6e1ffb
fix: change to use useDownloadLink hook
HinataKah0 Jun 6, 2023
656f2bf
refactor: deprecate legacyMain's detect OS
HinataKah0 Jun 10, 2023
2a0fdd9
Merge branch 'main' into chore/node-release-data-server-side
ovflowd Jun 11, 2023
1c916df
refactor: rework useDetectOS hook
HinataKah0 Jun 12, 2023
63af3f9
refactor: rework downloadUrlByOS util function
HinataKah0 Jun 12, 2023
f244689
refactor: remove unused constants
HinataKah0 Jun 13, 2023
57fe5d7
refactor: change file name
HinataKah0 Jun 14, 2023
40d3467
refactor: use inline
HinataKah0 Jun 14, 2023
ac70528
refactor: rework useDetectOS hook
HinataKah0 Jun 14, 2023
7e2e5a5
chore: delete WithNodeRelease file
HinataKah0 Jun 14, 2023
cb832d1
chore: add back withNodeRelease file
HinataKah0 Jun 14, 2023
92b7978
Merge remote-tracking branch 'upstream/main' into chore/node-release-…
HinataKah0 Jun 14, 2023
e7d7c3b
Merge remote-tracking branch 'upstream/main' into chore/node-release-…
HinataKah0 Jun 17, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ build
public/robots.txt
public/sitemap.xml
public/en/feed/*.xml
public/node-releases-data.json
pages/en/blog/year-[0-9][0-9][0-9][0-9].md

# Jest
Expand Down
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ CODEOWNERS
public/en/user-survey-report
public/static/documents
public/static/legacy
public/node-releases-data.json

# We don't want to lint/prettify the Coverage Results
coverage
Expand Down
20 changes: 0 additions & 20 deletions .storybook/constants.ts

This file was deleted.

7 changes: 3 additions & 4 deletions .storybook/preview.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import type { Preview } from '@storybook/react';
import NextImage from 'next/image';
import { ThemeProvider } from 'next-themes';
import { NodeDataProvider } from '../providers/nodeDataProvider';
import { NodeReleasesProvider } from '../providers/nodeReleasesProvider';
import { LocaleProvider } from '../providers/localeProvider';
import { openSans } from '../util/nextFonts';
import BaseApp, { setAppFont } from '../next.app';
import { pageProps } from './constants';

import '../styles/index.scss';

Expand Down Expand Up @@ -34,11 +33,11 @@ export const decorators = [
<BaseApp>
<ThemeProvider>
<LocaleProvider>
<NodeDataProvider nodeVersionData={pageProps.nodeVersionData}>
<NodeReleasesProvider>
<div data-test-id="story-root">
<Story />
</div>
</NodeDataProvider>
</NodeReleasesProvider>
</LocaleProvider>
</ThemeProvider>
</BaseApp>
Expand Down
97 changes: 97 additions & 0 deletions __fixtures__/nodeReleases.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
import type { NodeRelease } from '../types';

export const createNodeReleases = (): NodeRelease[] => [
{
currentStart: '2023-04-18',
ltsStart: '2023-10-24',
maintenanceStart: '2024-10-22',
endOfLife: '2026-04-30',
major: 20,
version: '20.2.0',
versionWithPrefix: 'v20.2.0',
codename: '',
isLts: false,
status: 'Current',
npm: '9.6.6',
v8: '11.3.244.8',
releaseDate: '2023-05-16',
modules: '115',
},
{
currentStart: '2022-10-18',
maintenanceStart: '2023-04-01',
endOfLife: '2023-06-01',
major: 19,
version: '19.9.0',
versionWithPrefix: 'v19.9.0',
codename: '',
isLts: false,
status: 'End-of-life',
npm: '9.6.3',
v8: '10.8.168.25',
releaseDate: '2023-04-10',
modules: '111',
},
{
currentStart: '2022-04-19',
ltsStart: '2022-10-25',
maintenanceStart: '2023-10-18',
endOfLife: '2025-04-30',
major: 18,
version: '18.16.0',
versionWithPrefix: 'v18.16.0',
codename: 'Hydrogen',
isLts: true,
status: 'Active LTS',
npm: '9.5.1',
v8: '10.2.154.26',
releaseDate: '2023-04-12',
modules: '108',
},
{
currentStart: '2021-10-19',
maintenanceStart: '2022-04-01',
endOfLife: '2022-06-01',
major: 17,
version: '17.9.1',
versionWithPrefix: 'v17.9.1',
codename: '',
isLts: false,
status: 'End-of-life',
npm: '8.11.0',
v8: '9.6.180.15',
releaseDate: '2022-06-01',
modules: '102',
},
{
currentStart: '2021-04-20',
ltsStart: '2021-10-26',
maintenanceStart: '2022-10-18',
endOfLife: '2023-09-11',
major: 16,
version: '16.20.0',
versionWithPrefix: 'v16.20.0',
codename: 'Gallium',
isLts: true,
status: 'Maintenance LTS',
npm: '8.19.4',
v8: '9.4.146.26',
releaseDate: '2023-03-28',
modules: '93',
},
{
currentStart: '2020-10-20',
maintenanceStart: '2021-04-01',
endOfLife: '2021-06-01',
major: 15,
version: '15.14.0',
versionWithPrefix: 'v15.14.0',
codename: '',
isLts: false,
status: 'End-of-life',
npm: '7.7.6',
v8: '8.6.395.17',
releaseDate: '2021-04-06',
modules: '88',
},
];
10 changes: 4 additions & 6 deletions components/Downloads/DownloadList.tsx
Original file line number Diff line number Diff line change
@@ -1,17 +1,15 @@
import { FormattedMessage } from 'react-intl';
import LocalizedLink from '../LocalizedLink';
import { useNavigation } from '../../hooks/useNavigation';
import type { NodeVersionData } from '../../types';
import type { NodeRelease } from '../../types';
import type { FC } from 'react';

type DownloadListProps = Pick<NodeVersionData, 'node'>;

const DownloadList: FC<DownloadListProps> = ({ node }) => {
const DownloadList: FC<NodeRelease> = ({ versionWithPrefix }) => {
const { getSideNavigation } = useNavigation();

const [, ...downloadNavigation] = getSideNavigation('download', {
shaSums: { nodeVersion: node },
allDownloads: { nodeVersion: node },
shaSums: { nodeVersion: versionWithPrefix },
allDownloads: { nodeVersion: versionWithPrefix },
});

return (
Expand Down
92 changes: 47 additions & 45 deletions components/Downloads/DownloadReleasesTable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,55 +2,57 @@ import { FormattedMessage } from 'react-intl';
import Link from 'next/link';
import { getNodejsChangelog } from '../../util/getNodeJsChangelog';
import { getNodeApiLink } from '../../util/getNodeApiLink';
import type { ExtendedNodeVersionData } from '../../types';
import { useNodeReleases } from '../../hooks/useNodeReleases';
import type { FC } from 'react';

type DownloadReleasesTableProps = { releases: ExtendedNodeVersionData[] };
const DownloadReleasesTable: FC = () => {
const { releases } = useNodeReleases();

const DownloadReleasesTable: FC<DownloadReleasesTableProps> = ({
releases,
}) => (
<table id="tbVersions" className="download-table full-width">
<thead>
<tr>
<td>Version</td>
<td>LTS</td>
<td>Date</td>
<td>V8</td>
<td>npm</td>
<td>
NODE_MODULE_VERSION<Link href="#ref-1">[1]</Link>
<span id="backref-1"></span>
</td>
<td></td>
</tr>
</thead>
<tbody>
{releases.map((release, key) => (
<tr key={key}>
<td data-label="Version">Node.js {release.nodeNumeric}</td>
<td data-label="LTS">{release.ltsName}</td>
<td data-label="Date">
<time>{release.releaseDate}</time>
</td>
<td data-label="V8">{release.v8}</td>
<td data-label="npm">{release.npm}</td>
<td data-label="NODE_MODULE_VERSION">{release.modules}</td>
<td className="download-table-last">
<a href={`https://nodejs.org/download/release/${release.node}`}>
<FormattedMessage id="components.downloadReleasesTable.releases" />
</a>
<a href={getNodejsChangelog(release.node)}>
<FormattedMessage id="components.downloadReleasesTable.changelog" />
</a>
<a href={getNodeApiLink(release.node)}>
<FormattedMessage id="components.downloadReleasesTable.docs" />
</a>
return (
<table id="tbVersions" className="download-table full-width">
<thead>
<tr>
<td>Version</td>
<td>LTS</td>
<td>Date</td>
<td>V8</td>
<td>npm</td>
<td>
NODE_MODULE_VERSION<Link href="#ref-1">[1]</Link>
<span id="backref-1"></span>
</td>
<td></td>
</tr>
))}
</tbody>
</table>
);
</thead>
<tbody>
{releases.map(release => (
<tr key={release.major}>
<td data-label="Version">Node.js {release.version}</td>
<td data-label="LTS">{release.codename}</td>
<td data-label="Date">
<time>{release.releaseDate}</time>
</td>
<td data-label="V8">{release.v8}</td>
<td data-label="npm">{release.npm}</td>
<td data-label="NODE_MODULE_VERSION">{release.modules}</td>
<td className="download-table-last">
<a
href={`https://nodejs.org/download/release/${release.versionWithPrefix}`}
>
<FormattedMessage id="components.downloadReleasesTable.releases" />
</a>
<a href={getNodejsChangelog(release.versionWithPrefix)}>
<FormattedMessage id="components.downloadReleasesTable.changelog" />
</a>
<a href={getNodeApiLink(release.versionWithPrefix)}>
<FormattedMessage id="components.downloadReleasesTable.docs" />
</a>
</td>
</tr>
))}
</tbody>
</table>
);
};

export default DownloadReleasesTable;
Loading