Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit 06020a8

Browse files
0mnsovflowd
andauthored
Fix Broken Link in learn page (#2856)
* Fix Broken Link in learn page * fix broken links * fix broken links * fix linting errors duplicate keys * update-snapshots * fix redirect errors * fix duplicate redirects * fix trailing slash Co-authored-by: Claudio Wunder <cwunder@gnome.org>
1 parent faac17d commit 06020a8

10 files changed

Lines changed: 248 additions & 311 deletions

File tree

firebase.json

Lines changed: 127 additions & 207 deletions
Large diffs are not rendered by default.

redirects.js

Lines changed: 81 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,29 @@
22
// Note.: Gatsby requires trailing slashes on the path names
33
module.exports = {
44
// Redirects old About pages path to the new ones
5-
'/governance/': '/en/about/governance/',
5+
'/governance/': '/about/governance/',
66
'/working-groups/':
77
'https://github.com/nodejs/TSC/blob/main/WORKING_GROUPS.md',
8-
'/releases/': '/en/about/releases/',
9-
'/privacy/': '/en/',
10-
'/en/about/privacy/': '/en/',
11-
'/security/': '/en/about/security/',
8+
'/releases/': '/about/releases/',
9+
'/security/': '/about/security/',
10+
1211
// Outside Redirects
1312
'/trademark/': 'https://trademark-policy.openjsf.org/',
1413
'/about/trademark/': 'https://trademark-policy.openjsf.org/',
15-
'/en/about/trademark/': 'https://trademark-policy.openjsf.org/',
14+
1615
// Redirects the old `/docs` path to `/api`
1716
'/docs/*': '/api/',
18-
'/storybook/*': '/en/',
19-
'/en/learn/the-package-json-guide/':
17+
'/storybook/*': '/',
18+
'/learn/the-package-json-guide/':
2019
'https://docs.npmjs.com/cli/v8/configuring-npm/package-json',
2120
'/the-package-json-guide/':
2221
'https://docs.npmjs.com/cli/v8/configuring-npm/package-json',
23-
'/en/learn/the-package-lockjson-file/':
22+
'/learn/the-package-lockjson-file/':
2423
'https://docs.npmjs.com/cli/v8/configuring-npm/package-lock-json',
25-
'/en/learn/how-to-exit-from-a-nodejs-program/': '/en/learn/',
26-
'/en/learn/where-does-npm-install-the-packages/': '/en/learn/',
27-
'/en/learn/get-http-request-body-data-using-nodejs/': '/en/learn/',
28-
'/en/learn/a-brief-history-of-nodejs/': '/en/learn/',
29-
'/en/learn/nodejs-file-paths/': '/en/learn/',
24+
'/learn/how-to-exit-from-a-nodejs-program/': '/learn/',
25+
'/learn/where-does-npm-install-the-packages/': '/learn/',
26+
'/learn/get-http-request-body-data-using-nodejs/': '/learn/',
27+
'/learn/nodejs-file-paths/': '/learn/',
3028
'/learn/asynchronous-work/blocking-vs-non-blocking':
3129
'https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Introducing',
3230
'/learn/discover-javascript-timers':
@@ -35,84 +33,73 @@ module.exports = {
3533
'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises',
3634
'/learn/the-nodejs-event-loop':
3735
'https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises',
38-
'/blog/': '/en/blog',
39-
'/blog/advisory-board/2014/12/05/listening-to-the-community': '/en/blog',
40-
'/blog/community/2015/05/15/foundation-benefits-all/': '/en/blog',
41-
'/blog/community/2016/09/06/v5-to-v7': '/en/blog',
42-
'/blog/npm/2011/03/24/npm-1-0-global-vs-local-installation': '/en/blog',
43-
'/blog/vulnerabilities/2017/01/27/openssl-january-2017': '/en/blog',
44-
'/blog/vulnerabilities/2017/09/29/september-2017-path-validation': '/en/blog',
45-
'/blog/weekly-updates/2015/04/24/weekly-update.2015-04-24': '/en/blog',
46-
'/blog/weekly-updates/2015/05/29/weekly-update.2015-05-29': '/en/blog',
47-
'/blog/weekly-updates/2015/07/31/weekly-update.2015-07-31': '/en/blog',
48-
'/blog/weekly-updates/2016/02/15/weekly-update.2016-02-15': '/en/blog',
49-
'/blog/weekly-updates/2016/03/07/weekly-update.2016-03-07': '/en/blog',
50-
'/blog/weekly-updates/2016/08/15/weekly-update.2016-08-15': '/en/blog',
51-
'/en/blog/announcements/2021/10/07/retiring-the-node-js-community-committee':
52-
'/en/blog',
53-
'/en/blog/announcements/2022/02/14/nodejs-trademarks-transferred-to-openjs-foundation':
54-
'/en/blog',
55-
'/en/blog/announcements/2022/04/19/v18-release-announce': '/en/blog',
56-
'/en/blog/announcements/2022/06/08/nodejs16-eol': '/en/blog',
57-
'/en/blog/community/2016/12/03/update-v8-5.4': '/en/blog',
58-
'/en/blog/vulnerabilities/2018/06/12/june-2018-security-releases': '/en/blog',
59-
'/en/blog/weekly-updates/2015/07/17/weekly-update.2015-07-17': '/en/blog',
60-
'/en/blog/weekly-updates/2016/04/29/weekly-update.2016-04-29': '/en/blog',
61-
'/en/blog/weekly-updates/2016/07/22/weekly-update.2016-07-22': '/en/blog',
62-
'/en/blog/weekly-updates/2016/08/15/weekly-update.2016-08-15': '/en/blog',
63-
'/en/learn/accept-input-from-the-command-line-in-nodejs/': '/en/learn/',
64-
'/en/learn/asynchronous-flow-control/': '/en/learn/',
65-
'/en/learn/build-an-http-server/': '/en/learn/',
66-
'/en/learn/discover-javascript-timers/': '/en/learn/',
67-
'/en/learn/ecmascript-2015-es6-and-beyond/': '/en/learn/',
68-
'/en/learn/expose-functionality-from-a-nodejs-file-using-exports/':
69-
'/en/learn/',
70-
'/en/learn/find-the-installed-version-of-an-npm-package/': '/en/learn/',
71-
'/en/learn/how-to-log-an-object-in-nodejs/': '/en/learn/',
72-
'/en/learn/how-to-read-environment-variables-from-nodejs/': '/en/learn/',
73-
'/en/learn/how-to-use-the-nodejs-repl/': '/en/learn/',
74-
'/en/learn/install-an-older-version-of-an-npm-package/': '/en/learn/',
75-
'/en/learn/making-http-requests-with-nodejs/': '/en/learn/',
76-
'/en/learn/modern-asynchronous-javascript-with-async-and-await/':
77-
'/en/learn/',
78-
'/en/learn/nodejs-accept-arguments-from-the-command-line/': '/en/learn/',
79-
'/en/learn/nodejs-buffers/': '/en/learn/',
80-
'/en/learn/nodejs-streams/': '/en/learn/',
81-
'/en/learn/nodejs-with-typescript/': '/en/learn/',
82-
'/en/learn/nodejs-with-webassembly/': '/en/learn/',
83-
'/en/learn/output-to-the-command-line-using-nodejs/': '/en/learn/',
84-
'/en/learn/overview-of-blocking-vs-non-blocking/': '/en/learn/',
85-
'/en/learn/reading-files-with-nodejs/': '/en/learn/',
86-
'/en/learn/run-nodejs-scripts-from-the-command-line/': '/en/learn/',
87-
'/en/learn/semantic-versioning-using-npm/': '/en/learn/',
88-
'/en/learn/the-nodejs-event-loop/': '/en/learn/',
89-
'/en/learn/the-nodejs-events-module/': '/en/learn/',
90-
'/en/learn/the-npx-nodejs-package-runner/': '/en/learn/',
91-
'/en/learn/the-v8-javascript-engine/': '/en/learn/',
92-
'/en/learn/understanding-javascript-promises/': '/en/learn/',
93-
'/en/learn/understanding-setimmediate/': '/en/learn/',
94-
'/en/learn/uninstalling-npm-packages/': '/en/learn/',
95-
'/en/learn/update-all-the-nodejs-dependencies-to-their-latest-version/':
96-
'/en/learn/',
97-
'/en/learn/working-with-folders-in-nodejs': '/en/learn/',
98-
'/fr/learn/a-brief-history-of-nodejs/': '/fr/learn',
99-
'/fr/learn/build-an-http-server/': '/fr/learn',
100-
'/fr/learn/ecmascript-2015-es6-and-beyond/': '/fr/learn',
101-
'/fr/learn/error-handling-in-nodejs/': '/fr/learn',
102-
'/fr/learn/find-the-installed-version-of-an-npm-package/': '/fr/learn',
103-
'/fr/learn/javascript-asynchronous-programming-and-callbacks/': '/fr/learn',
104-
'/fr/learn/making-http-requests-with-nodejs/': '/fr/learn',
105-
'/fr/learn/nodejs-buffers/': '/fr/learn',
106-
'/fr/learn/nodejs-file-paths/': '/fr/learn',
107-
'/fr/learn/npm-dependencies-and-devdependencies/': '/fr/learn',
108-
'/fr/learn/run-nodejs-scripts-from-the-command-line/': '/fr/learn',
109-
'/fr/learn/the-nodejs-event-emitter/': '/fr/learn',
110-
'/fr/learn/the-nodejs-events-module/': '/fr/learn',
111-
'/fr/learn/the-nodejs-path-module/': '/fr/learn',
112-
'/fr/learn/update-all-the-nodejs-dependencies-to-their-latest-version/':
113-
'/fr/learn',
114-
'/fr/learn/working-with-folders-in-nodejs/': '/fr/learn',
115-
'/fr/learn/writing-files-with-nodejs/': '/fr/learn',
116-
'/learn/introduction-to-nodejs/': '/en/learn/',
117-
'/learn/the-nodejs-http-module/': '/en/learn/',
36+
37+
// Blog
38+
'/blog/advisory-board/2014/12/05/listening-to-the-community': '/blog/',
39+
'/blog/community/2015/05/15/foundation-benefits-all/': '/blog/',
40+
'/blog/community/2016/09/06/v5-to-v7': '/blog/',
41+
'/blog/npm/2011/03/24/npm-1-0-global-vs-local-installation': '/blog/',
42+
'/blog/vulnerabilities/2017/01/27/openssl-january-2017': '/blog/',
43+
'/blog/vulnerabilities/2017/09/29/september-2017-path-validation': '/blog/',
44+
'/blog/weekly-updates/2015/04/24/weekly-update.2015-04-24': '/blog/',
45+
'/blog/weekly-updates/2015/05/29/weekly-update.2015-05-29': '/blog/',
46+
'/blog/weekly-updates/2015/07/31/weekly-update.2015-07-31': '/blog/',
47+
'/blog/weekly-updates/2016/02/15/weekly-update.2016-02-15': '/blog/',
48+
'/blog/weekly-updates/2016/03/07/weekly-update.2016-03-07': '/blog/',
49+
'/blog/announcements/2021/10/07/retiring-the-node-js-community-committee':
50+
'/blog/',
51+
'/blog/announcements/2022/02/14/nodejs-trademarks-transferred-to-openjs-foundation':
52+
'/blog/',
53+
'/blog/announcements/2022/04/19/v18-release-announce': '/blog/',
54+
'/blog/announcements/2022/06/08/nodejs16-eol': '/blog/',
55+
'/blog/community/2016/12/03/update-v8-5.4': '/blog/',
56+
'/blog/vulnerabilities/2018/06/12/june-2018-security-releases': '/blog/',
57+
'/blog/weekly-updates/2015/07/17/weekly-update.2015-07-17': '/blog/',
58+
'/blog/weekly-updates/2016/04/29/weekly-update.2016-04-29': '/blog/',
59+
'/blog/weekly-updates/2016/07/22/weekly-update.2016-07-22': '/blog/',
60+
'/blog/weekly-updates/2016/08/15/weekly-update.2016-08-15': '/blog/',
61+
62+
// learn
63+
'/learn/accept-input-from-the-command-line-in-nodejs/': '/learn/',
64+
'/learn/asynchronous-flow-control/': '/learn/',
65+
'/learn/build-an-http-server/': '/learn/',
66+
'/learn/discover-javascript-timers/': '/learn/',
67+
'/learn/expose-functionality-from-a-nodejs-file-using-exports/': '/learn/',
68+
'/learn/how-to-log-an-object-in-nodejs/': '/learn/',
69+
'/learn/how-to-read-environment-variables-from-nodejs/': '/learn/',
70+
'/learn/how-to-use-the-nodejs-repl/': '/learn/',
71+
'/learn/install-an-older-version-of-an-npm-package/': '/learn/',
72+
'/learn/making-http-requests-with-nodejs/': '/learn/',
73+
'/learn/modern-asynchronous-javascript-with-async-and-await/': '/learn/',
74+
'/learn/nodejs-accept-arguments-from-the-command-line/': '/learn/',
75+
'/learn/nodejs-streams/': '/learn/',
76+
'/learn/nodejs-with-typescript/': '/learn/',
77+
'/learn/nodejs-with-webassembly/': '/learn/',
78+
'/learn/output-to-the-command-line-using-nodejs/': '/learn/',
79+
'/learn/overview-of-blocking-vs-non-blocking/': '/learn/',
80+
'/learn/reading-files-with-nodejs/': '/learn/',
81+
'/learn/semantic-versioning-using-npm/': '/learn/',
82+
'/learn/the-nodejs-event-loop/': '/learn/',
83+
'/learn/the-nodejs-events-module/': '/learn/',
84+
'/learn/the-npx-nodejs-package-runner/': '/learn/',
85+
'/learn/the-v8-javascript-engine/': '/learn/',
86+
'/learn/understanding-javascript-promises/': '/learn/',
87+
'/learn/understanding-setimmediate/': '/learn/',
88+
'/learn/uninstalling-npm-packages/': '/learn/',
89+
'/learn/working-with-folders-in-nodejs': '/learn/',
90+
'/learn/a-brief-history-of-nodejs/': '/learn/',
91+
'/learn/ecmascript-2015-es6-and-beyond/': '/learn/',
92+
'/learn/error-handling-in-nodejs/': '/learn/',
93+
'/learn/find-the-installed-version-of-an-npm-package/': '/learn/',
94+
'/learn/javascript-asynchronous-programming-and-callbacks/': '/learn/',
95+
'/learn/nodejs-buffers/': '/learn/',
96+
'/learn/npm-dependencies-and-devdependencies/': '/learn/',
97+
'/learn/run-nodejs-scripts-from-the-command-line/': '/learn/',
98+
'/learn/the-nodejs-event-emitter/': '/learn/',
99+
'/learn/the-nodejs-path-module/': '/learn/',
100+
'/learn/update-all-the-nodejs-dependencies-to-their-latest-version/':
101+
'/learn/',
102+
'/learn/working-with-folders-in-nodejs/': '/learn/',
103+
'/learn/writing-files-with-nodejs/': '/learn/',
104+
'/learn/introduction-to-nodejs/': '/learn/',
118105
};

src/components/Footer/__tests__/__snapshots__/index.test.tsx.snap

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,11 @@ exports[`Tests for Footer component renders correctly 1`] = `
2121
</li>
2222
<li>
2323
<a
24+
aria-label="Node.js Privacy Policy - PDF (Opens in new tab)"
2425
class="link"
25-
href="/about/privacy"
26+
href="https://privacy-policy.openjsf.org/"
27+
rel="noopener noreferrer"
28+
target="_blank"
2629
>
2730
Privacy Policy
2831
</a>

src/components/Footer/index.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,15 @@ const Footer = (): JSX.Element => (
2424
</a>
2525
</li>
2626
<li>
27-
<Link className={styles.link} to="/about/privacy">
27+
<a
28+
className={styles.link}
29+
target="_blank"
30+
href="https://privacy-policy.openjsf.org/"
31+
rel="noopener noreferrer"
32+
aria-label="Node.js Privacy Policy - PDF (Opens in new tab)"
33+
>
2834
<FormattedMessage id="components.footer.links.privacy" />
29-
</Link>
35+
</a>
3036
</li>
3137
<li>
3238
<a

src/components/Layout/__tests__/__snapshots__/page.test.tsx.snap

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -342,8 +342,11 @@ exports[`PageLayout component renders correctly with data 1`] = `
342342
</li>
343343
<li>
344344
<a
345+
aria-label="Node.js Privacy Policy - PDF (Opens in new tab)"
345346
class="link"
346-
href="/about/privacy"
347+
href="https://privacy-policy.openjsf.org/"
348+
rel="noopener noreferrer"
349+
target="_blank"
347350
>
348351
Privacy Policy
349352
</a>

src/pages/about/__tests__/__snapshots__/resources.test.tsx.snap

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -473,8 +473,11 @@ exports[`Resources page renders correctly 1`] = `
473473
</li>
474474
<li>
475475
<a
476+
aria-label="Node.js Privacy Policy - PDF (Opens in new tab)"
476477
class="link"
477-
href="/about/privacy"
478+
href="https://privacy-policy.openjsf.org/"
479+
rel="noopener noreferrer"
480+
target="_blank"
478481
>
479482
Privacy Policy
480483
</a>

src/pages/download/__tests__/__snapshots__/index.test.tsx.snap

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -812,8 +812,11 @@ exports[`Download page renders correctly 1`] = `
812812
</li>
813813
<li>
814814
<a
815+
aria-label="Node.js Privacy Policy - PDF (Opens in new tab)"
815816
class="link"
816-
href="/about/privacy"
817+
href="https://privacy-policy.openjsf.org/"
818+
rel="noopener noreferrer"
819+
target="_blank"
817820
>
818821
Privacy Policy
819822
</a>
@@ -1750,8 +1753,11 @@ exports[`Download page should handle LTS to Current switch 1`] = `
17501753
</li>
17511754
<li>
17521755
<a
1756+
aria-label="Node.js Privacy Policy - PDF (Opens in new tab)"
17531757
class="link"
1754-
href="/about/privacy"
1758+
href="https://privacy-policy.openjsf.org/"
1759+
rel="noopener noreferrer"
1760+
target="_blank"
17551761
>
17561762
Privacy Policy
17571763
</a>

src/pages/download/__tests__/__snapshots__/package-manager.test.tsx.snap

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -474,8 +474,11 @@ exports[`Package Manager Page renders correctly 1`] = `
474474
</li>
475475
<li>
476476
<a
477+
aria-label="Node.js Privacy Policy - PDF (Opens in new tab)"
477478
class="link"
478-
href="/about/privacy"
479+
href="https://privacy-policy.openjsf.org/"
480+
rel="noopener noreferrer"
481+
target="_blank"
479482
>
480483
Privacy Policy
481484
</a>

src/templates/__tests__/__snapshots__/learn.test.tsx.snap

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -417,8 +417,11 @@ exports[`Learn Template renders correctly 1`] = `
417417
</li>
418418
<li>
419419
<a
420+
aria-label="Node.js Privacy Policy - PDF (Opens in new tab)"
420421
class="link"
421-
href="/about/privacy"
422+
href="https://privacy-policy.openjsf.org/"
423+
rel="noopener noreferrer"
424+
target="_blank"
422425
>
423426
Privacy Policy
424427
</a>

src/templates/__tests__/__snapshots__/post.test.tsx.snap

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,8 +304,11 @@ exports[`LearnLayout Template renders correctly 1`] = `
304304
</li>
305305
<li>
306306
<a
307+
aria-label="Node.js Privacy Policy - PDF (Opens in new tab)"
307308
class="link"
308-
href="/about/privacy"
309+
href="https://privacy-policy.openjsf.org/"
310+
rel="noopener noreferrer"
311+
target="_blank"
309312
>
310313
Privacy Policy
311314
</a>

0 commit comments

Comments
 (0)