Skip to content

Commit 20150a0

Browse files
committed
refactor(download): extract constants to JSON and reorganize download utils
>> >> Moved constants.json and index.tsx into a dedicated subdirectory. >> Reorganized constants such as PLATFORMS into constants.json using object destructuring. >> Similarly for OS_NOT_SUPPORTING_INSTALLERS, OperatingSystems >> >> Fixes: nodejs#7561 Signed-off-by: vishal <vishalkumarvkvk988@gmail.com>
1 parent 663fad9 commit 20150a0

File tree

24 files changed

+138
-10
lines changed

24 files changed

+138
-10
lines changed

apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -53,16 +53,18 @@ const OperatingSystemDropdown: FC<OperatingSystemDropdownProps> = () => {
5353
);
5454

5555
return (
56-
<Select<UserOS>
57-
values={parsedOperatingSystems}
58-
defaultValue={release.os !== 'LOADING' ? release.os : undefined}
59-
loading={release.os === 'LOADING'}
60-
placeholder={t('layouts.download.dropdown.unknown')}
61-
ariaLabel={t('layouts.download.dropdown.os')}
62-
onChange={value => release.setOS(value)}
63-
className="min-w-[8.5rem]"
64-
inline={true}
65-
/>
56+
<div>
57+
<Select<UserOS>
58+
values={parsedOperatingSystems}
59+
defaultValue={release.os !== 'LOADING' ? release.os : undefined}
60+
loading={release.os === 'LOADING'}
61+
placeholder={t('layouts.download.dropdown.unknown')}
62+
ariaLabel={t('layouts.download.dropdown.os')}
63+
onChange={value => release.setOS(value)}
64+
className="min-w-[8.5rem]"
65+
inline={true}
66+
/>
67+
</div>
6668
);
6769
};
6870

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
'use client';
2+
3+
import { useTranslations } from 'next-intl';
4+
import type { FC } from 'react';
5+
6+
const WSLMessage: FC = () => {
7+
const t = useTranslations();
8+
return (
9+
<>
10+
<div className="mt-4 rounded-lg border border-blue-200 bg-blue-50 p-4 dark:border-blue-800 dark:bg-blue-900/20">
11+
<h3 className="mb-2 text-lg font-semibold text-blue-800 dark:text-blue-200">
12+
{t('layouts.download.wsl.title')}
13+
</h3>
14+
<p className="text-blue-700 dark:text-blue-300">
15+
{t('layouts.download.wsl.description')}
16+
</p>
17+
<a
18+
href="https://docs.microsoft.com/en-us/windows/wsl/install"
19+
target="_blank"
20+
rel="noopener noreferrer"
21+
className="mt-2 inline-block text-blue-600 hover:underline dark:text-blue-400"
22+
>
23+
{t('layouts.download.wsl.learnMore')}
24+
</a>
25+
</div>
26+
</>
27+
);
28+
};
29+
export default WSLMessage;
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
'use client';
2+
3+
import { useContext } from 'react';
4+
5+
import { ReleaseContext } from '#site/providers/releaseProvider';
6+
7+
import WSLMessage from './WSLMessage';
8+
9+
const WindowsWSLMessage = () => {
10+
const { os } = useContext(ReleaseContext);
11+
// consitioms to chekc ifo the operating system is selcted as Linux or not
12+
if (os !== 'WIN') return null;
13+
return <WSLMessage />;
14+
};
15+
16+
export default WindowsWSLMessage;

apps/site/next.mdx.use.client.mjs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import ReleasePlatformDropdown from './components/Downloads/Release/PlatformDrop
1515
import ReleasePrebuiltDownloadButtons from './components/Downloads/Release/PrebuiltDownloadButtons';
1616
import ReleaseCodeBox from './components/Downloads/Release/ReleaseCodeBox';
1717
import ReleaseVersionDropdown from './components/Downloads/Release/VersionDropdown';
18+
import WindowsWSLMessage from './components/Downloads/WindowsWSLMessage';
19+
import WSLMessage from './components/Downloads/WSLMessage';
1820
import Link from './components/Link';
1921
import LinkWithArrow from './components/LinkWithArrow';
2022
import MDXCodeBox from './components/MDX/CodeBox';
@@ -30,6 +32,9 @@ import { ReleaseProvider } from './providers/releaseProvider';
3032
export const clientMdxComponents = {
3133
// Renders MDX CodeTabs
3234
CodeTabs: MDXCodeTabs,
35+
// Renders WindowsWSLMessage
36+
WindowsWSLMessage: WindowsWSLMessage,
37+
3338
// Renders a Button Component for `button` tags
3439
Button: Button,
3540
// Links with External Arrow
@@ -40,6 +45,9 @@ export const clientMdxComponents = {
4045
DownloadButton: DownloadButton,
4146
// Renders a Download Link
4247
DownloadLink: DownloadLink,
48+
// Renders WSL Message
49+
WSLMessage: WSLMessage,
50+
4351
// Group of components that enable you to select versions for Node.js
4452
// releases and download selected versions. Uses `releaseProvider` as a provider
4553
Release: {

apps/site/pages/en/download/index.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ layout: download
33
title: Download Node.js®
44
---
55

6+
<WindowsWSLMessage />
7+
68
<section>
79

810
Get Node.js® <Release.VersionDropdown /> for <Release.OperatingSystemDropdown /> using <Release.InstallationMethodDropdown /> with <Release.PackageManagerDropdown />

apps/site/pages/es/download/index.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ layout: download
33
title: Descarga Node.js®
44
---
55

6+
<WindowsWSLMessage />
7+
68
<section>
79
Obtiene Node.js® <Release.VersionDropdown /> para <Release.OperatingSystemDropdown /> usando <Release.InstallationMethodDropdown /> con <Release.PackageManagerDropdown />
810

apps/site/pages/fr/download/index.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ layout: download
33
title: Télécharger Node.js®
44
---
55

6+
<WindowsWSLMessage />
7+
68
<section>
79
Obtenir Node.js® <Release.VersionDropdown /> pour <Release.OperatingSystemDropdown /> l'utiliser <Release.InstallationMethodDropdown /> avec <Release.PackageManagerDropdown />
810

apps/site/pages/id/download/index.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ layout: download
33
title: Unduh Node.js®
44
---
55

6+
<WindowsWSLMessage />
7+
68
<section>
79
Dapatkan Node.js® <Release.VersionDropdown /> untuk <Release.OperatingSystemDropdown /> menggunakan <Release.InstallationMethodDropdown /> dengan <Release.PackageManagerDropdown />
810

apps/site/pages/ja/download/index.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ layout: download
33
title: Node.js®をダウンロードする
44
---
55

6+
<WindowsWSLMessage />
7+
68
<section>
79
<Release.OperatingSystemDropdown />用のNode.js® <Release.VersionDropdown />と<Release.PackageManagerDropdown />を<Release.InstallationMethodDropdown />を使ってダウンロードする
810

apps/site/pages/ko/download/index.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ layout: download
33
title: Node.js® 다운로드
44
---
55

6+
<WindowsWSLMessage />
7+
68
<section>
79
Node.js® <Release.VersionDropdown />를 <Release.OperatingSystemDropdown /> 환경에서 <Release.InstallationMethodDropdown /> 방식으로 <Release.PackageManagerDropdown />를(을) 사용해 설치하세요.
810

apps/site/pages/pt/download/index.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ layout: download
33
title: Descarregar a Node.js®
44
---
55

6+
<WindowsWSLMessage />
7+
68
<section>
79
Obter a Node.js® <Release.VersionDropdown /> para <Release.OperatingSystemDropdown /> usando <Release.InstallationMethodDropdown /> com <Release.PackageManagerDropdown />
810

apps/site/pages/uk/download/index.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ layout: download
33
title: Завантажити Node.js®
44
---
55

6+
<WindowsWSLMessage />
7+
68
<section>
79
Отримати Node.js® <Release.VersionDropdown /> для <Release.OperatingSystemDropdown /> за допомогою <Release.InstallationMethodDropdown /> з <Release.PackageManagerDropdown />
810

apps/site/pages/zh-tw/download/index.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ layout: download
33
title: 下載 Node.js®
44
---
55

6+
<WindowsWSLMessage />
7+
68
<section>
79
取得適用於 <Release.OperatingSystemDropdown /> 的 Node.js® <Release.VersionDropdown /> 透過 <Release.InstallationMethodDropdown /> 包含 <Release.PackageManagerDropdown />
810

packages/i18n/locales/en.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,11 @@
316316
"n": "\"n\" is a cross-platform Node.js version manager.",
317317
"volta": "\"Volta\" is a cross-platform Node.js version manager."
318318
}
319+
},
320+
"wsl": {
321+
"title": "Using Windows? Try WSL 🦖",
322+
"description": "Windows Subsystem for Linux (WSL) allows you to run a Linux environment directly on Windows without the need for Virtual Machine. This can provide a better development experience for Node.js applications.",
323+
"learnMore": "Learn more about WSL"
319324
}
320325
},
321326
"logo": "Node.js logo"

packages/i18n/locales/es.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,11 @@
321321
"chocolateyIsNotNodejsPackageManager": "Chocolatey no es un administrador de paquetes de Node.js.",
322322
"chocolateyInstructions": "Siga las instrucciones oficiales en https://chocolatey.org/",
323323
"chocolateyNotMaintanedByNodejs": "Chocolatey no es mantenido oficialmente por el proyecto Node.js y puede que no sea compatible con la versión {version} de Node.js"
324+
},
325+
"wsl": {
326+
"title": "¿Usas Windows? ¡Prueba WSL 🦖",
327+
"description": "El Subsistema de Windows para Linux (WSL) te permite ejecutar un entorno Linux directamente en Windows sin necesidad de una máquina virtual. Esto puede ofrecer una mejor experiencia de desarrollo para aplicaciones Node.js.",
328+
"learnMore": "Aprende más sobre WSL"
324329
}
325330
}
326331
}

packages/i18n/locales/fr.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,11 @@
316316
"n": "\"n\" est un gestionnaire de versions Node.js multiplateforme.",
317317
"volta": "\"Volta\" est un gestionnaire de versions Node.js multiplateforme."
318318
}
319+
},
320+
"wsl": {
321+
"title": "Vous utilisez Windows ? Essayez WSL 🦖",
322+
"description": "Le Sous-système Windows pour Linux (WSL) vous permet d’exécuter un environnement Linux directement sur Windows sans avoir besoin d’une machine virtuelle. Cela peut améliorer l’expérience de développement pour les applications Node.js.",
323+
"learnMore": "En savoir plus sur WSL"
319324
}
320325
},
321326
"logo": "Logo Node.js"

packages/i18n/locales/id.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,11 @@
282282
"devbox": "Devbox menciptakan lingkungan pengembangan yang terisolasi dan dapat direproduksi.",
283283
"docker": "Docker adalah platform kontainerisasi."
284284
}
285+
},
286+
"wsl": {
287+
"title": "Menggunakan Windows? Coba WSL 🦖",
288+
"description": "Windows Subsystem for Linux (WSL) memungkinkan Anda menjalankan lingkungan Linux langsung di Windows tanpa perlu Mesin Virtual. Ini dapat memberikan pengalaman pengembangan yang lebih baik untuk aplikasi Node.js.",
289+
"learnMore": "Pelajari lebih lanjut tentang WSL"
285290
}
286291
}
287292
}

packages/i18n/locales/ja.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,11 @@
316316
"n": "\"n\"はクロスプラットフォームに対応したNode.jsのバージョンマネージャーです。",
317317
"volta": "\"Volta\"はクロスプラットフォームに対応したNode.jsのバージョンマネージャーです。"
318318
}
319+
},
320+
"wsl": {
321+
"title": "Windows を使用中ですか?WSL を試しましょう 🦖",
322+
"description": "Windows Subsystem for Linux (WSL) を使用すると、仮想マシンを使用せずに Windows 上で直接 Linux 環境を実行できます。これは Node.js アプリケーションの開発体験を向上させることができます。",
323+
"learnMore": "WSL の詳細はこちら"
319324
}
320325
},
321326
"logo": "Node.jsロゴ"

packages/i18n/locales/ko.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,11 @@
282282
"devbox": "Devbox는 격리되고 재현 가능한 개발 환경을 제공합니다.",
283283
"docker": "Docker는 컨테이너화 플랫폼입니다. "
284284
}
285+
},
286+
"wsl": {
287+
"title": "Windows를 사용 중이신가요? WSL을 사용해 보세요 🦖",
288+
"description": "Windows Subsystem for Linux (WSL)을 사용하면 가상 머신 없이 Windows에서 직접 Linux 환경을 실행할 수 있습니다. 이는 Node.js 애플리케이션 개발 경험을 향상시킬 수 있습니다.",
289+
"learnMore": "WSL에 대해 자세히 알아보기"
285290
}
286291
}
287292
}

packages/i18n/locales/pt.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,11 @@
289289
"docker": "Docker é uma plataforma de contentorização.",
290290
"volta": "\"Volta\" é um gestor de versão de Node.js multiplataforma."
291291
}
292+
},
293+
"wsl": {
294+
"title": "Usa Windows? Experimente o WSL 🦖",
295+
"description": "O Subsistema do Windows para Linux (WSL) permite que você execute um ambiente Linux diretamente no Windows sem a necessidade de uma máquina virtual. Isso pode oferecer uma melhor experiência de desenvolvimento para aplicações Node.js.",
296+
"learnMore": "Saiba mais sobre o WSL"
292297
}
293298
},
294299
"logo": "Logótipo da Node.js"

packages/i18n/locales/tr.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,11 @@
322322
"chocolateyIsNotNodejsPackageManager": "Chocolatey, Node.js paket yöneticisi değildir.",
323323
"chocolateyInstructions": "Resmi talimatlar için https://chocolatey.org/ adresini takip edin.",
324324
"chocolateyNotMaintanedByNodejs": "Chocolatey, Node.js projesi tarafından resmi olarak sürdürülmüyor ve Node.js'nin {version} sürümünü desteklemiyor olabilir"
325+
},
326+
"wsl": {
327+
"title": "Windows mu kullanıyorsunuz? WSL’yi deneyin 🦖",
328+
"description": "Windows için Linux Alt Sistemi (WSL), sanal makineye ihtiyaç duymadan doğrudan Windows üzerinde bir Linux ortamı çalıştırmanızı sağlar. Bu, Node.js uygulamaları için daha iyi bir geliştirme deneyimi sunabilir.",
329+
"learnMore": "WSL hakkında daha fazla bilgi edinin"
325330
}
326331
}
327332
}

packages/i18n/locales/uk.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,11 @@
291291
"n": "«n» — це кросплатформний менеджер версій Node.js.",
292292
"volta": "«Volta» — це кросплатформний менеджер версій Node.js."
293293
}
294+
},
295+
"wsl": {
296+
"title": "Використовуєте Windows? Спробуйте WSL 🦖",
297+
"description": "Підсистема Windows для Linux (WSL) дозволяє запускати середовище Linux безпосередньо в Windows без необхідності у віртуальній машині. Це може покращити досвід розробки додатків Node.js.",
298+
"learnMore": "Дізнатися більше про WSL"
294299
}
295300
},
296301
"logo": "Логотип Node.js"

packages/i18n/locales/zh-cn.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,11 @@
291291
"n": "\"n\" 是一个跨平台的 Node.js 版本管理器。",
292292
"volta": "\"Volta\" 是一个跨平台的 Node.js 版本管理器。"
293293
}
294+
},
295+
"wsl": {
296+
"title": "使用 Windows?试试 WSL 🦖",
297+
"description": "Windows 子系统 Linux(WSL)允许您在无需虚拟机的情况下,直接在 Windows 上运行 Linux 环境。这可以为 Node.js 应用程序提供更好的开发体验。",
298+
"learnMore": "了解更多关于 WSL 的信息"
294299
}
295300
},
296301
"logo": "Node.js 徽标"

packages/i18n/locales/zh-tw.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,11 @@
291291
"n": "「n」是跨平台的 Node.js 版本管理程式。",
292292
"volta": "「Volta」是跨平台的 Node.js 版本管理程式。"
293293
}
294+
},
295+
"wsl": {
296+
"title": "使用 Windows?試試 WSL 🦖",
297+
"description": "Windows 子系統 Linux(WSL)允許您在不需要虛擬機的情況下,直接在 Windows 上運行 Linux 環境。這可以為 Node.js 應用程式提供更好的開發體驗。",
298+
"learnMore": "了解更多有關 WSL 的資訊"
294299
}
295300
},
296301
"logo": "Node.js 標誌"

0 commit comments

Comments
 (0)