+ ),
+};
+
+export default { title: 'Design System' } as MetaObj;
diff --git a/packages/ui-components/__design__/platform-logos.stories.tsx b/packages/ui-components/__design__/platform-logos.stories.tsx
new file mode 100644
index 0000000000000..50a846d5d58c8
--- /dev/null
+++ b/packages/ui-components/__design__/platform-logos.stories.tsx
@@ -0,0 +1,33 @@
+import type { Meta as MetaObj, StoryObj } from '@storybook/react';
+
+import AppleIcon from '@node-core/ui-components/Icons/Platform/Apple';
+import ChocoIcon from '@node-core/ui-components/Icons/Platform/Choco';
+import DockerIcon from '@node-core/ui-components/Icons/Platform/Docker';
+import GenericIcon from '@node-core/ui-components/Icons/Platform/Generic';
+import HomebrewIcon from '@node-core/ui-components/Icons/Platform/Homebrew';
+import LinuxIcon from '@node-core/ui-components/Icons/Platform/Linux';
+import MicrosoftIcon from '@node-core/ui-components/Icons/Platform/Microsoft';
+import NVMIcon from '@node-core/ui-components/Icons/Platform/NVM';
+
+export const PlatformLogos: StoryObj = {
+ render: () => (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ),
+};
+
+export default { title: 'Design System' } as MetaObj;
diff --git a/packages/ui-components/__design__/social-logos.stories.tsx b/packages/ui-components/__design__/social-logos.stories.tsx
new file mode 100644
index 0000000000000..2ddb8c15836e2
--- /dev/null
+++ b/packages/ui-components/__design__/social-logos.stories.tsx
@@ -0,0 +1,27 @@
+import type { Meta as MetaObj, StoryObj } from '@storybook/react';
+
+import BlueskyIcon from '@node-core/ui-components/Icons/Social/Bluesky';
+import GitHubIcon from '@node-core/ui-components/Icons/Social/GitHub';
+import LinkedInIcon from '@node-core/ui-components/Icons/Social/LinkedIn';
+import MastodonIcon from '@node-core/ui-components/Icons/Social/Mastodon';
+import SlackIcon from '@node-core/ui-components/Icons/Social/Slack';
+import XIcon from '@node-core/ui-components/Icons/Social/X';
+
+export const SocialMediaLogos: StoryObj = {
+ render: () => (
+
+
+
+
+
+
+
+
+
+
+
+
+ ),
+};
+
+export default { title: 'Design System' } as MetaObj;
diff --git a/packages/ui-components/eslint.config.js b/packages/ui-components/eslint.config.js
new file mode 100644
index 0000000000000..7edede4a34117
--- /dev/null
+++ b/packages/ui-components/eslint.config.js
@@ -0,0 +1,68 @@
+import importX from 'eslint-plugin-import-x';
+import react from 'eslint-plugin-react';
+import storybook from 'eslint-plugin-storybook';
+import tseslint from 'typescript-eslint';
+
+// eslint-disable-next-line no-relative-import-paths/no-relative-import-paths
+import baseConfig from '../../eslint.config.js';
+
+export default tseslint.config(
+ ...baseConfig,
+ {
+ extends: [
+ react.configs.flat['jsx-runtime'],
+ ...tseslint.configs.recommended,
+ importX.flatConfigs.typescript,
+ ],
+ files: ['**/*.{js,mjs,ts,tsx}'],
+ rules: {
+ '@typescript-eslint/array-type': ['error', { default: 'generic' }],
+ '@typescript-eslint/consistent-type-imports': 'error',
+ '@typescript-eslint/no-require-imports': 'off',
+ },
+ settings: {
+ react: {
+ version: 'detect',
+ },
+ },
+ },
+ {
+ files: ['**/*.{tsx}'],
+ rules: {
+ '@typescript-eslint/consistent-type-definitions': ['error', 'type'],
+ 'react/no-unescaped-entities': 'off',
+ 'react/function-component-definition': [
+ 'error',
+ {
+ namedComponents: 'arrow-function',
+ unnamedComponents: 'arrow-function',
+ },
+ ],
+ 'no-restricted-syntax': [
+ 'error',
+ {
+ selector:
+ "ImportDeclaration[source.value='react'][specifiers.0.type='ImportDefaultSpecifier']",
+ message:
+ 'Default React import not allowed since we use the TypeScript jsx-transform. If you need a global type that collides with a React named export (such as `MouseEvent`), try using `globalThis.MouseHandler`',
+ },
+ {
+ selector:
+ "ImportDeclaration[source.value='react'] :matches(ImportNamespaceSpecifier)",
+ message:
+ 'Named * React import is not allowed. Please import what you need from React with Named Imports',
+ },
+ ],
+ },
+ },
+ {
+ files: ['.storybook/**', '**/*.mjs', '**/*.test.*'],
+ rules: {
+ 'no-relative-import-paths/no-relative-import-paths': 'off',
+ },
+ },
+ {
+ files: ['components/**/*.stories.tsx'],
+ extends: [...storybook.configs['flat/recommended']],
+ }
+);
diff --git a/packages/ui-components/package.json b/packages/ui-components/package.json
new file mode 100644
index 0000000000000..2d63260142336
--- /dev/null
+++ b/packages/ui-components/package.json
@@ -0,0 +1,44 @@
+{
+ "name": "@node-core/ui-components",
+ "type": "module",
+ "scripts": {
+ "check-types": "tsc --noEmit",
+ "lint:js": "eslint \"**/*.{js,mjs,ts,tsx}\"",
+ "lint:css": "stylelint \"**/*.css\" --allow-empty-input --cache --cache-strategy=content --cache-location=.stylelintcache",
+ "lint": "turbo run lint:js lint:css",
+ "lint:fix": "turbo run lint:js lint:css --no-cache -- --fix",
+ "storybook": "cross-env NODE_NO_WARNINGS=1 storybook dev -p 6006 --quiet --no-open",
+ "storybook:build": "cross-env NODE_NO_WARNINGS=1 storybook build --quiet --webpack-stats-json"
+ },
+ "engines": {
+ "node": ">=20"
+ },
+ "dependencies": {
+ "classnames": "^2.5.1"
+ },
+ "devDependencies": {
+ "react": "^18.3.1",
+ "@savvywombat/tailwindcss-grid-areas": "^4.0.0",
+ "@storybook/addon-controls": "^8.4.1",
+ "@storybook/addon-interactions": "^8.4.1",
+ "@storybook/addon-styling-webpack": "^1.0.1",
+ "@storybook/addon-themes": "^8.4.1",
+ "@storybook/addon-viewport": "^8.4.1",
+ "@storybook/addon-webpack5-compiler-swc": "^1.0.5",
+ "@storybook/react": "^8.4.4",
+ "@storybook/react-webpack5": "^8.4.4",
+ "@tailwindcss/container-queries": "^0.1.1",
+ "autoprefixer": "^10.4.20",
+ "eslint-plugin-import-x": "^4.4.2",
+ "eslint-plugin-react": "^7.37.2",
+ "eslint-plugin-storybook": "^0.11.0",
+ "storybook": "^8.4.1",
+ "stylelint": "^16.9.0",
+ "stylelint-config-standard": "^36.0.1",
+ "stylelint-order": "^6.0.4",
+ "stylelint-selector-bem-pattern": "^4.0.1",
+ "tailwindcss": "^3.4.14",
+ "typescript": "^5.6.3",
+ "typescript-eslint": "^8.8.1"
+ }
+}
diff --git a/packages/ui-components/tailwind.config.ts b/packages/ui-components/tailwind.config.ts
new file mode 100644
index 0000000000000..d41cd09bbea4f
--- /dev/null
+++ b/packages/ui-components/tailwind.config.ts
@@ -0,0 +1 @@
+export { default } from '../../tailwind.config';
diff --git a/packages/ui-components/tsconfig.json b/packages/ui-components/tsconfig.json
new file mode 100644
index 0000000000000..304db63b5cb47
--- /dev/null
+++ b/packages/ui-components/tsconfig.json
@@ -0,0 +1,21 @@
+{
+ "compilerOptions": {
+ "target": "esnext",
+ "lib": ["dom", "dom.iterable", "esnext"],
+ "allowJs": true,
+ "skipLibCheck": true,
+ "strict": true,
+ "forceConsistentCasingInFileNames": true,
+ "esModuleInterop": true,
+ "module": "esnext",
+ "moduleResolution": "Bundler",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "incremental": true,
+ "baseUrl": ".",
+ "outDir": "dist",
+ "jsx": "react-jsx",
+ "paths": { "@node-core/ui-components/*": ["./*"] }
+ },
+ "exclude": ["node_modules", "dist"]
+}
diff --git a/packages/ui-components/turbo.json b/packages/ui-components/turbo.json
new file mode 100644
index 0000000000000..370cc27316347
--- /dev/null
+++ b/packages/ui-components/turbo.json
@@ -0,0 +1,25 @@
+{
+ "$schema": "https://turbo.build/schema.json",
+ "extends": ["//"],
+ "globalEnv": ["NODE_ENV"],
+ "tasks": {
+ "lint:js": {
+ "inputs": ["**/*.{json,mjs,js,ts,tsx}"]
+ },
+ "lint:css": {
+ "inputs": ["**/*.css"],
+ "outputs": [".stylelintcache"]
+ },
+ "lint:fix": {
+ "cache": false
+ },
+ "storybook": {
+ "cache": false,
+ "persistent": true
+ },
+ "storybook:build": {
+ "inputs": ["**/*.{ts,tsx,mjs,css,json}"],
+ "outputs": ["storybook-static/**"]
+ }
+ }
+}
diff --git a/apps/site/types/og.ts b/packages/ui-components/types.ts
similarity index 69%
rename from apps/site/types/og.ts
rename to packages/ui-components/types.ts
index bc92f7b233678..47b76ba9336fc 100644
--- a/apps/site/types/og.ts
+++ b/packages/ui-components/types.ts
@@ -1,3 +1,4 @@
import type { SVGProps } from 'react';
+export type LogoVariant = 'default' | 'pride';
export type TailwindSVG = SVGProps & { tw?: string };
diff --git a/tailwind.config.ts b/tailwind.config.ts
new file mode 100644
index 0000000000000..1c1cb1a08875f
--- /dev/null
+++ b/tailwind.config.ts
@@ -0,0 +1,153 @@
+import type { Config } from 'tailwindcss';
+
+export default {
+ content: ['./**/*.tsx'],
+ theme: {
+ colors: {
+ green: {
+ 100: '#EDF2EB',
+ 200: '#C5E5B4',
+ 300: '#99CC7D',
+ 400: '#84BA64',
+ 500: '#5FA04E',
+ 600: '#417E38',
+ 700: '#2C682C',
+ 800: '#2C682C',
+ 900: '#1A3F1D',
+ },
+ neutral: {
+ 100: '#F6F7F9',
+ 200: '#E9EDF0',
+ 300: '#D9E1E4',
+ 400: '#CBD4D9',
+ 500: '#B1BCC2',
+ 600: '#929FA5',
+ 700: '#6E7B83',
+ 800: '#556066',
+ 900: '#2C3437',
+ 950: '#0D121C',
+ },
+ danger: {
+ 100: '#FBF1F0',
+ 200: '#FAD3D4',
+ 300: '#FAB6B7',
+ 400: '#FA8E8E',
+ 500: '#F65354',
+ 600: '#DE1A1B',
+ 700: '#B80C0C',
+ 800: '#900E0E',
+ 900: '#661514',
+ },
+ warning: {
+ 100: '#FDF3E7',
+ 200: '#FAD9B0',
+ 300: '#F5BC75',
+ 400: '#E99C40',
+ 500: '#D07912',
+ 600: '#AE5F00',
+ 700: '#8B4D04',
+ 800: '#683D08',
+ 900: '#4D2F0B',
+ },
+ info: {
+ 100: '#E9F4FA',
+ 200: '#BCE6FC',
+ 300: '#8ED4F8',
+ 400: '#52BAED',
+ 500: '#229AD6',
+ 600: '#0C7BB3',
+ 700: '#066291',
+ 800: '#074D71',
+ 900: '#0A3953',
+ },
+ accent1: {
+ 100: '#F7F1FB',
+ 200: '#EAD9FB',
+ 300: '#DBBDF9',
+ 400: '#C79BF2',
+ 500: '#AF74E8',
+ 600: '#9756D6',
+ 700: '#7D3CBE',
+ 800: '#642B9E',
+ 900: '#361B52',
+ },
+ accent2: {
+ 100: '#FBF0F4',
+ 200: '#FBD4E6',
+ 300: '#FBB4D2',
+ 400: '#F68BB7',
+ 500: '#ED5393',
+ 600: '#D6246E',
+ 700: '#B01356',
+ 800: '#8B1245',
+ 900: '#411526',
+ },
+ white: '#FFFFFF',
+ transparent: 'transparent',
+ shadow: '#101828',
+ },
+ fontSize: {
+ xs: ['0.75rem', '1rem'],
+ sm: ['0.875rem', '1.25rem'],
+ base: ['1rem', '1.5rem'],
+ lg: ['1.125rem', '1.75rem'],
+ xl: ['1.25rem', '1.875rem'],
+ '2xl': ['1.5rem', '2rem'],
+ '3xl': ['1.875rem', '2.25rem'],
+ '4xl': ['2.25rem', '2.5rem'],
+ '5xl': ['3rem', '3rem'],
+ '6xl': ['3.75rem', '3.75rem'],
+ '7xl': ['4.5rem', '4.5rem'],
+ },
+ fontWeight: {
+ regular: '400',
+ medium: '500',
+ semibold: '600',
+ bold: '700',
+ },
+ fontFamily: {
+ 'open-sans': ['var(--font-open-sans)'],
+ 'ibm-plex-mono': ['var(--font-ibm-plex-mono)'],
+ },
+ extend: {
+ screens: { xs: '670px' },
+ backgroundImage: {
+ 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))',
+ 'gradient-subtle':
+ 'linear-gradient(180deg, theme(colors.neutral.100 / 50%) 0%, theme(colors.neutral.100 / 0%) 48.32%)',
+ 'gradient-subtle-dark':
+ 'linear-gradient(180deg, theme(colors.neutral.900 / 50%) 0%, theme(colors.neutral.900 / 0%) 48.32%)',
+ 'gradient-subtle-gray':
+ 'linear-gradient(180deg, theme(colors.neutral.900) 0%, theme(colors.neutral.900 / 80%) 100%)',
+ 'gradient-subtle-white':
+ 'linear-gradient(180deg, theme(colors.white) 0%, theme(colors.white / 80%) 100%)',
+ 'gradient-glow-backdrop':
+ 'radial-gradient(8em circle at calc(50%) 10px, theme(colors.green.500), transparent 30%)',
+ },
+ boxShadow: {
+ xs: '0px 1px 2px 0px theme(colors.shadow / 5%)',
+ lg: '0px 4px 6px -2px theme(colors.shadow / 3%), 0px 12px 16px -4px theme(colors.shadow / 8%)',
+ },
+ spacing: { '4.5': '1.125rem', '18': '4.5rem' },
+ aria: { current: 'current="page"' },
+ maxWidth: { '8xl': '95rem' },
+ animation: {
+ surf: 'surf 1s infinite ease-in-out',
+ },
+ keyframes: {
+ surf: {
+ '0%': { transform: 'translate(0, 0)' },
+ '25%': { transform: 'translate(0, 6px)' },
+ '50%': { transform: 'translate(0, -6px)' },
+ '75%': { transform: 'translate(0, 3px)' },
+ '100%': { transform: 'translate(0, 0)' },
+ },
+ },
+ },
+ },
+ darkMode: ['selector', '[data-theme="dark"]'],
+ plugins: [
+ require('@savvywombat/tailwindcss-grid-areas'),
+ require('@tailwindcss/container-queries'),
+ ],
+} satisfies Config;
From 52a15c7c3125c39895bb95abee710fb94902bd81 Mon Sep 17 00:00:00 2001
From: RedYetiDev <38299977+RedYetiDev@users.noreply.github.com>
Date: Wed, 20 Nov 2024 18:40:15 -0500
Subject: [PATCH 02/65] fixup! feat(ui): add `ui-components` package
---
packages/ui-components/turbo.json | 1 +
1 file changed, 1 insertion(+)
diff --git a/packages/ui-components/turbo.json b/packages/ui-components/turbo.json
index 370cc27316347..6bafb0fe32149 100644
--- a/packages/ui-components/turbo.json
+++ b/packages/ui-components/turbo.json
@@ -3,6 +3,7 @@
"extends": ["//"],
"globalEnv": ["NODE_ENV"],
"tasks": {
+ "build": {},
"lint:js": {
"inputs": ["**/*.{json,mjs,js,ts,tsx}"]
},
From 74eb4029ca30dea49d9b0dc5b10cc8b139caaf41 Mon Sep 17 00:00:00 2001
From: Rafael Gonzaga
Date: Wed, 20 Nov 2024 20:14:22 -0300
Subject: [PATCH 03/65] Blog: v23.3.0 release post (#7268)
* Blog: v23.3.0 release post
Refs: https://github.com/nodejs/node/pull/55921
* Update apps/site/pages/en/blog/release/v23.3.0.md
Co-authored-by: Antoine du Hamel
Signed-off-by: Rafael Gonzaga
---------
Signed-off-by: Rafael Gonzaga
Co-authored-by: Antoine du Hamel
---
apps/site/pages/en/blog/release/v23.3.0.md | 147 +++++++++++++++++++++
1 file changed, 147 insertions(+)
create mode 100644 apps/site/pages/en/blog/release/v23.3.0.md
diff --git a/apps/site/pages/en/blog/release/v23.3.0.md b/apps/site/pages/en/blog/release/v23.3.0.md
new file mode 100644
index 0000000000000..f60c277844fcb
--- /dev/null
+++ b/apps/site/pages/en/blog/release/v23.3.0.md
@@ -0,0 +1,147 @@
+---
+date: '2024-11-20T23:01:40.107Z'
+category: release
+title: Node v23.3.0 (Current)
+layout: blog-post
+author: Rafael Gonzaga
+---
+
+## 2024-11-20, Version 23.3.0 (Current), @RafaelGSS
+
+### Notable Changes
+
+- \[[`5767b76c30`](https://github.com/nodejs/node/commit/5767b76c30)] - **doc**: enforce strict policy to semver-major releases (Rafael Gonzaga) [#55732](https://github.com/nodejs/node/pull/55732)
+- \[[`ccb69bb8d5`](https://github.com/nodejs/node/commit/ccb69bb8d5)] - **(SEMVER-MINOR)** **src**: add cli option to preserve env vars on diagnostic reports (Rafael Gonzaga) [#55697](https://github.com/nodejs/node/pull/55697)
+- \[[`d4e792643d`](https://github.com/nodejs/node/commit/d4e792643d)] - **(SEMVER-MINOR)** **util**: add sourcemap support to getCallSites (Marco Ippolito) [#55589](https://github.com/nodejs/node/pull/55589)
+- \[[`00e092bb4b`](https://github.com/nodejs/node/commit/00e092bb4b)] - **(SEMVER-MINOR)** **util**: fix util.getCallSites plurality (Chengzhong Wu) [#55626](https://github.com/nodejs/node/pull/55626)
+
+### Commits
+
+- \[[`9862912d41`](https://github.com/nodejs/node/commit/9862912d41)] - **assert**: differentiate cases where `cause` is `undefined` or missing (Antoine du Hamel) [#55738](https://github.com/nodejs/node/pull/55738)
+- \[[`32e5bbca95`](https://github.com/nodejs/node/commit/32e5bbca95)] - **benchmark**: add `test-reporters` (Aviv Keller) [#55757](https://github.com/nodejs/node/pull/55757)
+- \[[`c2103354e6`](https://github.com/nodejs/node/commit/c2103354e6)] - **benchmark**: add `test_runner/mock-fn` (Aviv Keller) [#55771](https://github.com/nodejs/node/pull/55771)
+- \[[`472d55e3e4`](https://github.com/nodejs/node/commit/472d55e3e4)] - **build**: implement node_use_amaro flag in GN build (Cheng) [#55798](https://github.com/nodejs/node/pull/55798)
+- \[[`77735674eb`](https://github.com/nodejs/node/commit/77735674eb)] - **build**: use glob for dependencies of out/Makefile (Richard Lau) [#55789](https://github.com/nodejs/node/pull/55789)
+- \[[`bba7323d51`](https://github.com/nodejs/node/commit/bba7323d51)] - **build**: apply cpp linting and formatting to ncrypto (Aviv Keller) [#55362](https://github.com/nodejs/node/pull/55362)
+- \[[`e0c222525e`](https://github.com/nodejs/node/commit/e0c222525e)] - **crypto**: allow length=0 for HKDF and PBKDF2 in SubtleCrypto.deriveBits (Filip Skokan) [#55866](https://github.com/nodejs/node/pull/55866)
+- \[[`cad557ec53`](https://github.com/nodejs/node/commit/cad557ec53)] - **deps**: update simdutf to 5.6.1 (Node.js GitHub Bot) [#55850](https://github.com/nodejs/node/pull/55850)
+- \[[`dc8aca3692`](https://github.com/nodejs/node/commit/dc8aca3692)] - **deps**: update undici to 6.21.0 (Node.js GitHub Bot) [#55851](https://github.com/nodejs/node/pull/55851)
+- \[[`e0db9ede4f`](https://github.com/nodejs/node/commit/e0db9ede4f)] - **deps**: update c-ares to v1.34.3 (Node.js GitHub Bot) [#55803](https://github.com/nodejs/node/pull/55803)
+- \[[`e147935144`](https://github.com/nodejs/node/commit/e147935144)] - **deps**: update icu to 76.1 (Node.js GitHub Bot) [#55551](https://github.com/nodejs/node/pull/55551)
+- \[[`e0ef65b8d5`](https://github.com/nodejs/node/commit/e0ef65b8d5)] - **doc**: remove non-working example (Antoine du Hamel) [#55856](https://github.com/nodejs/node/pull/55856)
+- \[[`ec953bca09`](https://github.com/nodejs/node/commit/ec953bca09)] - **doc**: add `node:sqlite` to mandatory `node:` prefix list (翠 / green) [#55846](https://github.com/nodejs/node/pull/55846)
+- \[[`1b863b96d5`](https://github.com/nodejs/node/commit/1b863b96d5)] - **doc**: add `-S` flag release preparation example (Antoine du Hamel) [#55836](https://github.com/nodejs/node/pull/55836)
+- \[[`a8311847d1`](https://github.com/nodejs/node/commit/a8311847d1)] - **doc**: clarify UV_THREADPOOL_SIZE env var usage (Preveen P) [#55832](https://github.com/nodejs/node/pull/55832)
+- \[[`787e51e603`](https://github.com/nodejs/node/commit/787e51e603)] - **doc**: add notable-change mention to sec release (Rafael Gonzaga) [#55830](https://github.com/nodejs/node/pull/55830)
+- \[[`e56265cc18`](https://github.com/nodejs/node/commit/e56265cc18)] - **doc**: fix history info for `URL.prototype.toJSON` (Antoine du Hamel) [#55818](https://github.com/nodejs/node/pull/55818)
+- \[[`c5afdaf5cb`](https://github.com/nodejs/node/commit/c5afdaf5cb)] - **doc**: correct max-semi-space-size statement (Joe Bowbeer) [#55812](https://github.com/nodejs/node/pull/55812)
+- \[[`65ffb2cae3`](https://github.com/nodejs/node/commit/65ffb2cae3)] - **doc**: update unflag info of `import.meta.resolve` (skyclouds2001) [#55810](https://github.com/nodejs/node/pull/55810)
+- \[[`9aeb671677`](https://github.com/nodejs/node/commit/9aeb671677)] - **doc**: run license-builder (github-actions\[bot]) [#55813](https://github.com/nodejs/node/pull/55813)
+- \[[`df5ea1a5b3`](https://github.com/nodejs/node/commit/df5ea1a5b3)] - **doc**: clarify triager role (Gireesh Punathil) [#55775](https://github.com/nodejs/node/pull/55775)
+- \[[`aa12de0f03`](https://github.com/nodejs/node/commit/aa12de0f03)] - **doc**: sort --report-exclude alphabetically (Rafael Gonzaga) [#55788](https://github.com/nodejs/node/pull/55788)
+- \[[`8576ca9897`](https://github.com/nodejs/node/commit/8576ca9897)] - **doc**: clarify removal of experimental API does not require a deprecation (Antoine du Hamel) [#55746](https://github.com/nodejs/node/pull/55746)
+- \[[`5767b76c30`](https://github.com/nodejs/node/commit/5767b76c30)] - **doc**: enforce strict policy to semver-major releases (Rafael Gonzaga) [#55732](https://github.com/nodejs/node/pull/55732)
+- \[[`1f2fcf1dc8`](https://github.com/nodejs/node/commit/1f2fcf1dc8)] - **doc**: add history entries for JSON modules stabilization (Antoine du Hamel) [#55855](https://github.com/nodejs/node/pull/55855)
+- \[[`83ba688d8f`](https://github.com/nodejs/node/commit/83ba688d8f)] - **esm**: fix import.meta.resolve crash (Marco Ippolito) [#55777](https://github.com/nodejs/node/pull/55777)
+- \[[`bdb6d12e7a`](https://github.com/nodejs/node/commit/bdb6d12e7a)] - **events**: add hasEventListener util for validate (Sunghoon) [#55230](https://github.com/nodejs/node/pull/55230)
+- \[[`d41cb49516`](https://github.com/nodejs/node/commit/d41cb49516)] - **fs**: prevent unwanted `dependencyOwners` removal (Carlos Espa) [#55565](https://github.com/nodejs/node/pull/55565)
+- \[[`db0d648d8f`](https://github.com/nodejs/node/commit/db0d648d8f)] - **fs**: fix bufferSize option for opendir recursive (Ethan Arrowood) [#55744](https://github.com/nodejs/node/pull/55744)
+- \[[`693fda0802`](https://github.com/nodejs/node/commit/693fda0802)] - **lib**: remove unused file `fetch_module` (Michaël Zasso) [#55880](https://github.com/nodejs/node/pull/55880)
+- \[[`156873303a`](https://github.com/nodejs/node/commit/156873303a)] - **lib**: prefer symbol to number in webidl `type` function (Antoine du Hamel) [#55737](https://github.com/nodejs/node/pull/55737)
+- \[[`cfe28b161a`](https://github.com/nodejs/node/commit/cfe28b161a)] - **lib**: remove unnecessary optional chaining (Gürgün Dayıoğlu) [#55728](https://github.com/nodejs/node/pull/55728)
+- \[[`bbb8f5914d`](https://github.com/nodejs/node/commit/bbb8f5914d)] - **lib**: use `Promise.withResolvers()` in timers (Yagiz Nizipli) [#55720](https://github.com/nodejs/node/pull/55720)
+- \[[`11e1bdd409`](https://github.com/nodejs/node/commit/11e1bdd409)] - **module**: tidy code string concat → string templates (Jacob Smith) [#55820](https://github.com/nodejs/node/pull/55820)
+- \[[`9c99255468`](https://github.com/nodejs/node/commit/9c99255468)] - **permission**: ignore internalModuleStat on module loading (Rafael Gonzaga) [#55797](https://github.com/nodejs/node/pull/55797)
+- \[[`5a437c446f`](https://github.com/nodejs/node/commit/5a437c446f)] - **report**: fix network queries in getReport libuv with exclude-network (Adrien Foulon) [#55602](https://github.com/nodejs/node/pull/55602)
+- \[[`bcbba723de`](https://github.com/nodejs/node/commit/bcbba723de)] - **sqlite**: add support for SQLite Session Extension (Bart Louwers) [#54181](https://github.com/nodejs/node/pull/54181)
+- \[[`49d55228de`](https://github.com/nodejs/node/commit/49d55228de)] - **src**: use env strings to create sqlite results (Michaël Zasso) [#55785](https://github.com/nodejs/node/pull/55785)
+- \[[`58d7a6ec10`](https://github.com/nodejs/node/commit/58d7a6ec10)] - _**Revert**_ "**src**: migrate `String::Value` to `String::ValueView`" (Michaël Zasso) [#55828](https://github.com/nodejs/node/pull/55828)
+- \[[`16786a6df8`](https://github.com/nodejs/node/commit/16786a6df8)] - **src**: improve `node:os` userInfo performance (Yagiz Nizipli) [#55719](https://github.com/nodejs/node/pull/55719)
+- \[[`ccb69bb8d5`](https://github.com/nodejs/node/commit/ccb69bb8d5)] - **(SEMVER-MINOR)** **src**: add cli option to preserve env vars on dr (Rafael Gonzaga) [#55697](https://github.com/nodejs/node/pull/55697)
+- \[[`770670c52c`](https://github.com/nodejs/node/commit/770670c52c)] - **test**: fix permission fixtures lint (Rafael Gonzaga) [#55819](https://github.com/nodejs/node/pull/55819)
+- \[[`84c47478d0`](https://github.com/nodejs/node/commit/84c47478d0)] - **test**: improve test coverage for child process message sending (Juan José) [#55710](https://github.com/nodejs/node/pull/55710)
+- \[[`e1f54e2527`](https://github.com/nodejs/node/commit/e1f54e2527)] - **test**: ensure that test priority is not higher than current priority (Livia Medeiros) [#55739](https://github.com/nodejs/node/pull/55739)
+- \[[`e1b42e7637`](https://github.com/nodejs/node/commit/e1b42e7637)] - **test**: add buffer to fs_permission tests (Rafael Gonzaga) [#55734](https://github.com/nodejs/node/pull/55734)
+- \[[`d1ad43e9ae`](https://github.com/nodejs/node/commit/d1ad43e9ae)] - **test**: improve test coverage for `ServerResponse` (Juan José) [#55711](https://github.com/nodejs/node/pull/55711)
+- \[[`034505e037`](https://github.com/nodejs/node/commit/034505e037)] - **test_runner**: error on mocking an already mocked date (Aviv Keller) [#55858](https://github.com/nodejs/node/pull/55858)
+- \[[`44324aa7e9`](https://github.com/nodejs/node/commit/44324aa7e9)] - **tools**: bump @eslint/plugin-kit from 0.2.0 to 0.2.3 in /tools/eslint (dependabot\[bot]) [#55875](https://github.com/nodejs/node/pull/55875)
+- \[[`3cfacd3fbb`](https://github.com/nodejs/node/commit/3cfacd3fbb)] - **tools**: fix exclude labels for commit-queue (Richard Lau) [#55809](https://github.com/nodejs/node/pull/55809)
+- \[[`8111a7655d`](https://github.com/nodejs/node/commit/8111a7655d)] - **tools**: make commit-queue check blocked label (Marco Ippolito) [#55781](https://github.com/nodejs/node/pull/55781)
+- \[[`419ea068fb`](https://github.com/nodejs/node/commit/419ea068fb)] - **tools**: remove non-existent file from eslint config (Aviv Keller) [#55772](https://github.com/nodejs/node/pull/55772)
+- \[[`7814669377`](https://github.com/nodejs/node/commit/7814669377)] - **tools**: fix c-ares updater script for Node.js 18 (Richard Lau) [#55717](https://github.com/nodejs/node/pull/55717)
+- \[[`3a9733cc4f`](https://github.com/nodejs/node/commit/3a9733cc4f)] - **util**: do not mark experimental feature as deprecated (Antoine du Hamel) [#55740](https://github.com/nodejs/node/pull/55740)
+- \[[`d4e792643d`](https://github.com/nodejs/node/commit/d4e792643d)] - **(SEMVER-MINOR)** **util**: add sourcemap support to getCallSites (Marco Ippolito) [#55589](https://github.com/nodejs/node/pull/55589)
+- \[[`00e092bb4b`](https://github.com/nodejs/node/commit/00e092bb4b)] - **(SEMVER-MINOR)** **util**: fix util.getCallSites plurality (Chengzhong Wu) [#55626](https://github.com/nodejs/node/pull/55626)
+
+Windows 64-bit Installer: https://nodejs.org/dist/v23.3.0/node-v23.3.0-x64.msi \
+Windows ARM 64-bit Installer: https://nodejs.org/dist/v23.3.0/node-v23.3.0-arm64.msi \
+Windows 64-bit Binary: https://nodejs.org/dist/v23.3.0/win-x64/node.exe \
+Windows ARM 64-bit Binary: https://nodejs.org/dist/v23.3.0/win-arm64/node.exe \
+macOS 64-bit Installer: https://nodejs.org/dist/v23.3.0/node-v23.3.0.pkg \
+macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v23.3.0/node-v23.3.0-darwin-arm64.tar.gz \
+macOS Intel 64-bit Binary: https://nodejs.org/dist/v23.3.0/node-v23.3.0-darwin-x64.tar.gz \
+Linux 64-bit Binary: https://nodejs.org/dist/v23.3.0/node-v23.3.0-linux-x64.tar.xz \
+Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v23.3.0/node-v23.3.0-linux-ppc64le.tar.xz \
+Linux s390x 64-bit Binary: https://nodejs.org/dist/v23.3.0/node-v23.3.0-linux-s390x.tar.xz \
+AIX 64-bit Binary: https://nodejs.org/dist/v23.3.0/node-v23.3.0-aix-ppc64.tar.gz \
+ARMv7 32-bit Binary: https://nodejs.org/dist/v23.3.0/node-v23.3.0-linux-armv7l.tar.xz \
+ARMv8 64-bit Binary: https://nodejs.org/dist/v23.3.0/node-v23.3.0-linux-arm64.tar.xz \
+Source Code: https://nodejs.org/dist/v23.3.0/node-v23.3.0.tar.gz \
+Other release files: https://nodejs.org/dist/v23.3.0/ \
+Documentation: https://nodejs.org/docs/v23.3.0/api/
+
+### SHASUMS
+
+```
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA256
+
+7573dd593cc56600ef573be8c5020ea82847ff26ad0fe94c0fa08470ba2e95ea node-v23.3.0-aix-ppc64.tar.gz
+5488e9c0a25fa69107dcc25b91fa1a27caa6ce2ced24947f3932c2cf6f646bc5 node-v23.3.0-arm64.msi
+472b9109dd9987ea49916f12b01ed2f09f1c4bf4befcf5695c1b9fd9cff3d177 node-v23.3.0-darwin-arm64.tar.gz
+4a6258e4f61b86990e9bd7575cfb22d2819ae4f5b9fa2f93badc507f5ebd8feb node-v23.3.0-darwin-arm64.tar.xz
+d1898f7901277968b78066f6b512cbc3bd7f2406950377826f9d8e02d4e24fe6 node-v23.3.0-darwin-x64.tar.gz
+32adb685dfde2ff57bf7f97ab2d469b4860332ba0b250417e02edf5c34dbbbd0 node-v23.3.0-darwin-x64.tar.xz
+c018d7f1bafe884b0d941994db425902a9defbce2fdb2624a2f62c6de355f873 node-v23.3.0-headers.tar.gz
+cb67347c0f3ab9a9dc077b7c330b55a3fcac2a4a598d9de231bd6fdbe4213f2a node-v23.3.0-headers.tar.xz
+af48591482236007d21665aa2bd3d145f490aa953e85c1ca7a7c7bf04b711341 node-v23.3.0-linux-arm64.tar.gz
+fd6b744f8689504918f3ce180ca2839bf51099632877451de2586138598a8d9e node-v23.3.0-linux-arm64.tar.xz
+95771bae444dcf2e7736c84ec328750267315f8118fdd49bc22eecdd2fe04998 node-v23.3.0-linux-armv7l.tar.gz
+8d0366e3345be802ba658713cf30801bf4ce442be4a1dccc4a5f4224f087f18d node-v23.3.0-linux-armv7l.tar.xz
+0b1b243804d2e97ae5013161a14b861d8fcdd44586b51d16260665aab5134603 node-v23.3.0-linux-ppc64le.tar.gz
+9bd1bb597c0abed9ff742cd2be7e5ee7732e8bfa8941f0f9717341dc59cd6b60 node-v23.3.0-linux-ppc64le.tar.xz
+3413be8e927c49b6836fdd10b0f89f16f811b4c3c9085cd1165ce3443f381353 node-v23.3.0-linux-s390x.tar.gz
+a9d37a934135b8d3371cd6662d5c5b7e423355c1015b7fdf2b48758adae19cbd node-v23.3.0-linux-s390x.tar.xz
+a4ceaf6e41d76017ee56705badc5d492cf3d5feca607c7a7d3ae54f7db14913b node-v23.3.0-linux-x64.tar.gz
+98e8201aa842efbf55c11c2a04fb6610d5793523b0cfbb34d61cd0495195c17d node-v23.3.0-linux-x64.tar.xz
+9656926b25dab9c0522d3e0b3ac3d19363d2e4917022de6a1a33d7b805128378 node-v23.3.0-win-arm64.7z
+9c0e84e160d3730741782bf389534ca1b41f58427c2fc8c5ca1541b2b089103c node-v23.3.0-win-arm64.zip
+b6a5e9b1a94c52af3e37dea8251509a81b06f6a41847a48a28397bad71e5062a node-v23.3.0-win-x64.7z
+868cd7af6f0c042944c38b1bc1212d608177478da2a141bd404f9366d8fbd2dd node-v23.3.0-win-x64.zip
+fd842e751de2d3ed9c30b678d4abc3d3cd8d137eaf7b92aa3a1b6deeea7af0e1 node-v23.3.0-x64.msi
+2864f99aad3e27555f09f473f0b3dbbbc4b6332a93ab39c374064f0ced340f18 node-v23.3.0.pkg
+256b2282698cf9eb1124485a5fde9415e0d106a670476dd6dc23bc228d7c2df9 node-v23.3.0.tar.gz
+42a6b5611aeec6723f4b6f98f1c205fc1fa32399df41dbed6a27083afd48c5c1 node-v23.3.0.tar.xz
+e997f328611ae7770958018336bde3364715681e46bffe96b95d719bcbed9fa2 win-arm64/node.exe
+a663818787224e59b0d571dc8346b8b9e8fc99786753971120fad7879bdcf24d win-arm64/node.lib
+0b824aefcb1eb19f919cc8541fccba952998ad7c0fde3f1d22925bde75c222df win-arm64/node_pdb.7z
+f37c1c7c5c2b5c0ba3749929022c79b3d6a8e4ca1a639f50478adfe5430d51ed win-arm64/node_pdb.zip
+838d91e322a08e0955eb8c605d30e654544efca412dedce9dd2b8b83cb6bb997 win-x64/node.exe
+16d5b600ec216018913aea9a62de20765fdefbc1ec2cfd9ad6c39fb92e26678c win-x64/node.lib
+8c03806384c118eac882c8c609de05ae96b29cd4579059e7b554062247aa5ac5 win-x64/node_pdb.7z
+33468332f69aa45ea55fe26f616971eb3ecb914e6d190367f71b08ebd856aa93 win-x64/node_pdb.zip
+-----BEGIN PGP SIGNATURE-----
+
+iQGzBAEBCAAdFiEEiQwI24V5Fi/uDfnbi+q0389VXvQFAmc+afkACgkQi+q0389V
+XvSZpgwAnaNVEDlSpRUsl7ugD0N6wwZzfLszOQYe6hlzNRGnYOYAOO6WnuWJLYKv
+YDwU/9Z/LBsMQogQQ128PZW7S7ojcndB2FN0iR56zWfvqnniZUxRcngz82Mr9sIP
+9wXPv43IXG3taOgVa4V+c37dB37Uah3Udz3IqmUjmwn+BBxIiPxswYsfseTanCn5
+dYLeiCYg2nBGKnFLBRK1+E6XHH8uGY+whCgSj0F7e18wTfQ1Xp7aS9DyBW6fs+ax
+D6hOpsk2RbpX9fkAhHkxTkiDCL1JqoQLZZdz3xzObkuWA2yVyuh/28C/yz+O4QDc
+TfxduDHkaRAABci8eEYGxuCv2Pp2H+7zxARRP/LtZZqXCvdFzO5EyvKX+x9Hwveq
+cPMUZEv0cqxsPK4Kp4tXOTisalcAA7g55ccU47cyx0CKHh3ORl+fbXdstbUwicNh
+LlH5hpT1PObb6kb341oXZ07jH3y6u2ksuKBNKGZUtdOXDVLEnkhnXS21OufBUpzR
+sn52cpl3
+=rs4F
+-----END PGP SIGNATURE-----
+```
From f00963ab944a959a2c29d87fcc1b0c3710810187 Mon Sep 17 00:00:00 2001
From: Aviv Keller
Date: Thu, 21 Nov 2024 06:23:08 -0500
Subject: [PATCH 04/65] fix(cache): remove cache rules from fetch() (#7270)
---
apps/site/app/[locale]/next-data/api-data/route.ts | 6 ++----
apps/site/next-data/blogData.ts | 7 +++----
apps/site/next-data/releaseData.ts | 7 +++----
apps/site/next.calendar.mjs | 2 +-
4 files changed, 9 insertions(+), 13 deletions(-)
diff --git a/apps/site/app/[locale]/next-data/api-data/route.ts b/apps/site/app/[locale]/next-data/api-data/route.ts
index ae07d205cdb11..849d93864de07 100644
--- a/apps/site/app/[locale]/next-data/api-data/route.ts
+++ b/apps/site/app/[locale]/next-data/api-data/route.ts
@@ -29,16 +29,14 @@ export const GET = async () => {
const gitHubApiResponse = await fetch(
getGitHubApiDocsUrl(versionWithPrefix),
- { ...authorizationHeaders, cache: 'force-cache' }
+ authorizationHeaders
);
return gitHubApiResponse.json().then((apiDocsFiles: Array) => {
// maps over each api file and get the download_url, fetch the content and deflates it
const mappedApiFiles = apiDocsFiles.map(
async ({ name, path: filename, download_url }) => {
- const apiFileResponse = await fetch(download_url, {
- cache: 'force-cache',
- });
+ const apiFileResponse = await fetch(download_url);
// Retrieves the content as a raw text string
const source = await apiFileResponse.text();
diff --git a/apps/site/next-data/blogData.ts b/apps/site/next-data/blogData.ts
index 186d04e50135a..0dd576f0e1171 100644
--- a/apps/site/next-data/blogData.ts
+++ b/apps/site/next-data/blogData.ts
@@ -25,10 +25,9 @@ const getBlogData = (cat: string, page?: number): Promise => {
const fetchURL = `${NEXT_DATA_URL}blog-data/${cat}/${page ?? 0}`;
- // When we're on RSC with Server capabilities we prefer using Next.js Data Fetching
- // as this will load cached data from the server instead of generating data on the fly
- // this is extremely useful for ISR and SSG as it will not generate this data on every request
- return fetch(fetchURL, { cache: 'force-cache' })
+ // This data cannot be cached because it is continuously updated. Caching it would lead to
+ // outdated information being shown to the user.
+ return fetch(fetchURL)
.then(response => response.text())
.then(response => parseBlogDataResponse(response));
};
diff --git a/apps/site/next-data/releaseData.ts b/apps/site/next-data/releaseData.ts
index b41d41729a9fd..25af64ef07d9c 100644
--- a/apps/site/next-data/releaseData.ts
+++ b/apps/site/next-data/releaseData.ts
@@ -19,12 +19,11 @@ const getReleaseData = (): Promise> => {
const fetchURL = `${NEXT_DATA_URL}release-data`;
- // When we're on RSC with Server capabilities we prefer using Next.js Data Fetching
- // as this will load cached data from the server instead of generating data on the fly
- // this is extremely useful for ISR and SSG as it will not generate this data on every request
+ // This data cannot be cached because it is continuously updated. Caching it would lead to
+ // outdated information being shown to the user.
// Note: We do manual JSON.parse after response.text() to prevent React from throwing an Error
// that does not provide a clear stack trace of which request is failing and what the JSON.parse error is
- return fetch(fetchURL, { cache: 'force-cache' })
+ return fetch(fetchURL)
.then(response => response.text())
.then(JSON.parse);
};
diff --git a/apps/site/next.calendar.mjs b/apps/site/next.calendar.mjs
index 7bc915013de8a..d32b4f5af27c3 100644
--- a/apps/site/next.calendar.mjs
+++ b/apps/site/next.calendar.mjs
@@ -33,7 +33,7 @@ export const getCalendarEvents = async (calendarId = '', maxResults = 20) => {
calendarQueryUrl.searchParams.append(key, value)
);
- return fetch(calendarQueryUrl, { cache: 'force-cache' })
+ return fetch(calendarQueryUrl)
.then(response => response.json())
.then(calendar => calendar.items ?? []);
};
From d80d08beae2aa583128871c72d3106da59341e97 Mon Sep 17 00:00:00 2001
From: Augustin Mauroy
Date: Fri, 22 Nov 2024 16:42:09 +0100
Subject: [PATCH 05/65] content(blog/events): Dublin collab summit 2024 (#7215)
* cotent(blog/events): dublin collab summit 2024
* fix-typo
Co-Authored-By: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com>
* WIP
* WIP
* Add more info about bsk
Co-authored-by: Aviv Keller
Signed-off-by: Augustin Mauroy
* fix grammar and typo
Co-authored-by: Aviv Keller
Signed-off-by: Augustin Mauroy
* fix typo and grammar
Co-authored-by: Aviv Keller
Signed-off-by: Augustin Mauroy
* WIP
* change the homepage notification per feedback, lengthen time
* normalized the first session with previous format
* normalized the second session with previous format
* normalized the third session with previous format
* normalized the fourth session with previous format
* normalized the fifth session with previous format
* normalized the sixth session with previous format
* normalized the seventh session with previous format
* normalized the eigth session with previous format
* cleanup final section, add more presenters per the session proposals, fix a duplication
* normalize end thanks
* remove personal note, as much as i like it
* remove outlier blockqoute
---------
Signed-off-by: Augustin Mauroy
Co-authored-by: Jacob Smith <3012099+JakobJingleheimer@users.noreply.github.com>
Co-authored-by: Aviv Keller
Co-authored-by: Brian Muenzenmeyer
---
apps/site/authors.json | 5 +
.../blog/events/collab-summit-2024-dublin.md | 365 ++++++++++++++++++
apps/site/site.json | 10 +-
3 files changed, 375 insertions(+), 5 deletions(-)
create mode 100644 apps/site/pages/en/blog/events/collab-summit-2024-dublin.md
diff --git a/apps/site/authors.json b/apps/site/authors.json
index 94713f4f4c006..c2aeadfac66d6 100644
--- a/apps/site/authors.json
+++ b/apps/site/authors.json
@@ -248,5 +248,10 @@
"id": "MattIPv4",
"name": "Matt Cowley",
"website": "https://github.com/MattIPv4"
+ },
+ "AugustinMauroy": {
+ "id": "AugustinMauroy",
+ "name": "Augustin Mauroy",
+ "website": "https://github.com/AugustinMauroy"
}
}
diff --git a/apps/site/pages/en/blog/events/collab-summit-2024-dublin.md b/apps/site/pages/en/blog/events/collab-summit-2024-dublin.md
new file mode 100644
index 0000000000000..77402768ddf0f
--- /dev/null
+++ b/apps/site/pages/en/blog/events/collab-summit-2024-dublin.md
@@ -0,0 +1,365 @@
+---
+date: '2024-11-11T00:00:00.000Z'
+category: events
+title: 'Trip report: Node.js collaboration summit (2024 Dublin)'
+layout: blog-post
+author: AugustinMauroy
+---
+
+
+
+Following the successful Node.js collaboration summit in London earlier this year, the Node.js community gathered once again for the second summit of 2024. This time, the event was hosted by [Baseline](https://www.baseline.community/events), a community and workshop space in Dublin.
+
+The [second collaboration summit of 2024](https://github.com/openjs-foundation/summit/issues/419), held on 7–8 November, continued the tradition of sharing knowledge, brainstorming solutions, and pushing forward new initiatives within the Node.js ecosystem. This edition focused on a range of topics, from collaborator health and diversity to documentation improvements and technical advancements. Here is a recap of what happened at the summit.
+
+## Collaborator Health Survey
+
+The collaborator health survey session at the Node.js collaboration summit in Dublin focused on understanding the current state of collaborator health and identifying ways to improve the well-being and productivity of contributors. The discussion, led by Marco Ippolito ([@marco-ippolito](https://github.com/marco-ippolito)) and Michael Dawson ([@mhdawson](https://github.com/mhdawson)), aimed to gather insights from the community and develop actionable steps to enhance the collaborator experience.
+
+### Current State of Collaborator Health
+
+The session began with shared slides outlining the current state of collaborator health within the Node.js project. Key points discussed included:
+
+- **CI Challenges**: We highlighted the biggest issue with the CI system as finding out what is wrong when something goes awry. This can be a frustrating and time-consuming process for collaborators.
+- **ncu-ci Command**: A collaborator showcased the [`ncu-ci` command](https://github.com/nodejs/node-core-utils/blob/main/docs/ncu-ci.md) and the [reliability repository](https://github.com/nodejs/reliability), demonstrating tools that can help streamline the CI process and improve collaborator efficiency.
+- **Documentation Needs**: Discussion emphasized the importance of mentioning the `ncu-ci` command in the bot comment for CI and documenting it better in the collaborator guide. This would ensure that collaborators are aware of the available tools and how to use them effectively.
+
+### Community Feedback and Suggestions
+
+The discussion also included valuable feedback and suggestions from the community on how to improve collaborator health:
+
+- **BuildPulse Integration**: We mentioned that BuildPulse is already integrated with the CI system but noted that many collaborators are unaware of its capabilities. Improving awareness and documentation around BuildPulse could help collaborators better understand and utilize the tool.
+- **Artifact Distribution**: We suggested using artifacts from the builds to help with bisecting commits, although it was noted that the CI system does not currently distribute them. Further, only the Windows artifacts are available, highlighting a gap in the current process.
+- **AI Products**: A collaborator mentioned that their company has seen impressive AI products that could help with CI issues, suggesting potential partnerships worth exploring.
+- **Social Media Recognition**: We proposed announcing first PRs or collaborator nominations on social media to provide public recognition for contributors. This could help motivate and engage collaborators, fostering a sense of community and achievement.
+
+### Challenges and Solutions
+
+The session also addressed some of the challenges faced by collaborators and proposed solutions to improve their experience:
+
+- **New Collaborator Onboarding**: We highlighted the need for more public recognition for new collaborators to encourage their continued engagement. However, their was caution about the potential for contributors to participate solely for social approval and then drop out, suggesting the need to balance recognition with meaningful contributions.
+- **Small Changes and Effort**: We noted that small changes do not necessarily equate to low effort, as some seemingly minor changes can require significant effort to implement. This underscores the importance of recognizing and valuing all contributions, regardless of their size.
+- **Project Management**: We emphasized the need for better project management within the Node.js project, including tracking features and roadmaps. This could help ensure that collaborators have clear guidance and support in their contributions.
+- **Buddy System**: We suggested implementing a buddy system to help new collaborators get started and provide ongoing support. This could involve pairing new collaborators with more experienced contributors to help them navigate the project and contribute effectively.
+
+### Actionable Steps
+
+The session concluded with a discussion of actionable steps that the Node.js community can take to improve collaborator health:
+
+- **Improve CI Documentation**: Ensure that the `ncu-ci` command and other CI tools are well-documented in the collaborator guide. This will help collaborators understand and utilize these tools effectively.
+- **Promote BuildPulse**: Increase awareness and documentation around BuildPulse to help collaborators better understand and utilize the tool for bisecting commits and improving CI efficiency.
+- **Public Recognition**: Implement public recognition for new collaborators, such as announcing first PRs or collaborator nominations on social media. This can help motivate and engage collaborators, fostering a sense of community and achievement.
+- **Balance Recognition and Contributions**: Ensure that recognition is balanced with meaningful contributions to avoid the potential for contributors to participate solely for social approval and then drop out.
+- **Value All Contributions**: Recognize and value all contributions, regardless of their size, acknowledging the effort required to implement even seemingly minor changes.
+- **Improve Project Management**: Implement better project management practices, including tracking features and roadmaps, to provide clear guidance and support for collaborators.
+- **Buddy System**: Establish a buddy system to help new collaborators get started and provide ongoing support, pairing them with more experienced contributors to help them navigate the project and contribute effectively.
+
+## Next-10 Survey
+
+The Next-10 Survey session at the Node.js collaboration summit in Dublin focused on the results and insights gathered from the latest survey conducted by the Node.js community. The discussion, led by Jean Burellier ([@sheplu](https://github.com/sheplu)), aimed to analyze the survey data, identify trends, and develop actionable steps to address the findings. The survey covered a wide range of topics, including ESM syntax usage, next initiatives, and the overall health of the Node.js ecosystem.
+
+### Survey Overview
+
+Jean presented the slides outlining the [key findings from the Next-10 Survey](https://github.com/nodejs/next-10/tree/main/surveys/2024-04). The survey received over 2000 responses, providing a comprehensive view of the Node.js community's thoughts and experiences.
+
+### ESM Syntax Usage
+
+One of the main topics discussed was the usage of ESM (ECMAScript Modules) syntax in production environments. Key points included:
+
+- **Awareness and Adoption**: We noted that with over 2000 responses, most participants should have a good understanding of whether they are running ESM in production. However, we also acknowledged that some respondents might not actually know whether they are using ESM, as frameworks like Next.js transpile ESM to CJS (CommonJS) behind the scenes.
+- **Usage Counter Proposal**: We suggested adding an opt-in usage counter to core that dumps JSON files, which could be requested in the survey. This would allow respondents to easily sanitize and share their usage data, providing more accurate insights into ESM adoption.
+- **Visibility and Outreach**: We emphasized the need for more visibility of the survey to reach a broader audience. Ethan added that it is crucial to reach out to the right people to ask relevant questions and gather meaningful data.
+
+### Next Initiatives
+
+The discussion also covered potential next initiatives for the Node.js project:
+
+- **Failed Participation Example**: We shared an example of a failed participation initiative related to vulnerability reporting. It is important to be clear about what you want to achieve and to engage people effectively.
+- **Flaky CI Working Group**: We proposed the creation of a working group focused on addressing flaky CI issues, highlighting the need to improve the reliability of the CI system.
+- **Next-Gen HTTP**: We also mentioned the importance of exploring next-generation HTTP protocols and their implications for the Node.js ecosystem.
+
+### Data Analysis and Professional Help
+
+The session highlighted the need for more professional help with data analysis to extract meaningful insights from the survey results:
+
+- **Professional Data Analysis**: A participant suggested the need for more professional help with the data, noting that while the survey received a large number of responses, the analysis could be improved to derive actionable insights.
+- **Zoom AI Tool**: Several participants mentioned the hope that the Zoom AI tool captured missed discussions, underscoring the importance of comprehensive documentation and analysis.
+
+### Actionable Steps
+
+The session concluded with a discussion of actionable steps that the Node.js community can take to address the findings from the Next-10 Survey:
+
+- **Improve Survey Visibility**: Increase the visibility of the survey to reach a broader audience and gather more comprehensive data. This could involve promoting the survey through various channels and engaging with key stakeholders.
+- **Clarify ESM Usage**: Ensure that respondents have a clear understanding of whether they are using ESM in production. This could involve providing guidance on how to determine ESM usage and adding an opt-in usage counter to core.
+- **Create Working Groups**: Establish working groups to address specific initiatives, such as a flaky CI working group, to focus on improving the reliability of the CI system.
+- **Explore Next-Gen HTTP**: Investigate next-generation HTTP protocols and their implications for the Node.js ecosystem, ensuring that the project remains at the forefront of web development technologies.
+- **Seek Professional Data Analysis**: Engage professional data analysts to help extract meaningful insights from the survey results, ensuring that the data is used effectively to inform decision-making.
+- **Document Missed Discussions**: Ensure that all discussions and insights are comprehensively documented, utilizing tools like the Zoom AI tool to capture missed discussions and provide a complete record of the session.
+
+## To know you is to love you. Diversifying Node.js
+
+Diversity and inclusion are fundamental to the growth and success of any open-source community. The Node.js collaboration summit in Dublin provided a platform to discuss and address these critical issues. The session on diversity, led by Robin Bender Ginn ([@rginn](https://github.com/rginn)), focused on understanding the current state of diversity within the Node.js collaborator culture and identifying actionable steps to foster a more inclusive environment.
+
+### Current State of Diversity
+
+Robin began the session by asking three key questions to gauge the attendees' perspectives on the Node.js collaborator culture. The responses were collected on post-it notes and provided valuable insights into the current state of diversity within the community.
+
+#### Q1: What words or phrases would you use to describe the Node.js collaborator culture?
+
+- **Silos**: Some attendees felt that the community is divided into silos, with different groups working independently.
+- **Scrappy**: The collaborator culture was described as scrappy, indicating a hands-on, DIY approach.
+- **Similar pains that get heard and carried over**: There was a recognition that similar issues often resurface and need to be addressed repeatedly.
+- **Chaos**: Some attendees perceived the collaborator culture as chaotic, with a lack of clear structure and organization.
+
+#### Q2: What actions or behaviors would we like to see more of to contribute to a positive perception? What behaviors make you feel valued and included?
+
+- **Patience**: Attendees emphasized the importance of patience in fostering a positive and inclusive environment.
+- **Faster to get PR landed**: Streamlining the process for landing pull requests (PRs) was identified as a way to make contributors feel valued.
+- **Mentorship**: Providing mentorship opportunities was seen as crucial for encouraging new contributors and helping them integrate into the community.
+- **Outreach**: Actively reaching out to diverse groups and communities was highlighted as a way to promote inclusion.
+- **Think more global**: Considering the global nature of the Node.js community and tailoring initiatives to be inclusive of different cultures and backgrounds.
+- **Professionalism**: Maintaining a professional demeanor in interactions was seen as important for creating a welcoming environment.
+- **Positive comments**: Providing positive feedback and encouragement was identified as a way to make contributors feel valued.
+
+#### Q3: What is something that each of you could do personally or as a group to engage new diverse contributors? What's the best way to break into the project?
+
+- **Mentoring**: Offering mentorship to new contributors was seen as a key action item.
+- **Personal invites**: Personally inviting individuals from diverse backgrounds to contribute to the project.
+- **Respect**: Showing respect for all contributors, regardless of their background or experience level.
+- **Positive comments**: Providing positive feedback and encouragement to new contributors.
+- **Promote more work**: Actively promoting the work of diverse contributors to highlight their contributions.
+- **Patience**: Being patient with new contributors as they learn the ropes.
+- **Attending diversity events**: Participating in diversity-focused events to engage with new contributors and foster a more inclusive community.
+
+### Actionable Steps for Improving Diversity
+
+The discussion highlighted several actionable steps that the Node.js community can take to improve diversity and inclusion:
+
+- **Mentorship Programs**: Establish formal mentorship programs to provide guidance and support to new contributors.
+- **Outreach Initiatives**: Actively reach out to diverse groups and communities to encourage their participation in the Node.js project.
+- **Global Perspective**: Consider the global nature of the Node.js community and tailor initiatives to be inclusive of different cultures and backgrounds.
+- **Positive Feedback**: Provide positive feedback and encouragement to new contributors to make them feel valued and included.
+- **Promote Diverse Contributions**: Actively promote the work of diverse contributors to highlight their contributions and encourage others to get involved.
+- **Attend Diversity Events**: Participate in diversity-focused events to engage with new contributors and foster a more inclusive community.
+
+### Challenges and Solutions
+
+The session also addressed some of the challenges faced by the Node.js community in promoting diversity and inclusion:
+
+- **Language Barriers**: English as the primary language can be a barrier for non-native speakers. The community discussed the importance of providing more async communication in English to help overcome this challenge.
+- **Undocumented Internal Knowledge**: The lack of documentation about internals can make it difficult for new contributors to get up to speed. Writing more documentation about internals, such as Async Hooks, was identified as a way to address this issue.
+- **Gatekeeping**: The perception that making small contributions requires a lot of time and effort can be a barrier to entry. The community discussed the need to provide more guidance and support to help new contributors get started.
+
+## Next 10 - Deep dive on funding
+
+Funding is a critical aspect of sustaining and growing the Node.js project. The session on funding at the Node.js collaboration summit in Dublin delved into the current state of funding, potential sources of revenue, and strategies for effectively utilizing available resources. The discussion, led by Michael Dawson ([@mhdawson](https://github.com/mhdawson)) and Jean Burellier ([@sheplu](https://github.com/sheplu)), aimed to identify actionable steps to ensure the long-term financial health of the project.
+
+### Current State of Funding
+
+The session began with an overview of the current funding landscape for the Node.js project. Key points discussed included:
+
+- **Foundation Support**: The OpenJS Foundation plays a crucial role in providing financial support for the Node.js project. However, there is a need to explore additional funding sources to ensure the project's sustainability.
+- **Company Contributions**: While many companies benefit from Node.js, their contributions to the project often fall short of what is needed to support its ongoing development and maintenance.
+- **Volunteer Efforts**: The project heavily relies on volunteer contributions, but this model can be unsustainable in the long term, especially for critical tasks such as security and CI maintenance.
+
+### Potential Sources of Funding
+
+The discussion explored various potential sources of funding that could help sustain the Node.js project:
+
+- **Open Collective**: We mentioned the use of Open Collective as a funding platform, noting its advantages and limitations. While it has been used for CI funding, it has not seen widespread adoption.
+- **GitHub Sponsors**: Another potential funding source is GitHub Sponsors, which could provide a more streamlined way for companies and individuals to contribute financially to the project.
+- **Secure Project Funding**: We highlighted that the Node.js project is one of the first few foundations to receive secure project funding, with an initial allocation of $10,000 per project.
+- **Project Alpha Omega**: We also mentioned Project Alpha Omega, which is now separate from OpenSSF and could provide additional funding opportunities.
+
+### Strategies for Effective Utilization of Funds
+
+The session also focused on strategies for effectively utilizing available funds to support the project's needs:
+
+- **Prioritizing Critical Tasks**: We emphasized the importance of prioritizing critical tasks such as security and CI maintenance. These tasks are essential for the project's health and should be funded accordingly.
+- **Documenting Needs**: We suggested documenting the project's funding needs clearly to ensure that potential contributors understand what is required and how their contributions will be used.
+- **Engaging Companies**: We proposed that the foundation could engage with companies to encourage them to contribute financially to the project. This could involve talking to employers of new contributors to highlight the benefits of supporting Node.js.
+- **Reducing Workload**: We suggested reducing the project's workload by maintaining fewer active release lines, such as one LTS and one Current release. This could help alleviate the burden on volunteers and make the project more sustainable.
+
+### Challenges and Solutions
+
+The discussion also addressed some of the challenges faced by the Node.js project in securing and utilizing funding:
+
+- **Compliance and Regulations**: We noted that compliance with regulations is something that companies are willing to pay for, highlighting a potential funding opportunity.
+- **Extended EOL Support**: We suggested using funding to extend the End of Life (EOL) support for LTS releases, noting that this could be a valuable service for companies relying on older versions of Node.js.
+- **DevRel and Communication**: We emphasized the need for better communication with the broader community about the project's funding needs and how contributions are used. This could involve funding DevRel efforts to write blog posts and summarize the work of various working groups.
+- **Social Media Recognition**: We suggested that social media recognition for companies contributing to the project could put social pressure on other companies to follow suit.
+
+### Actionable Steps
+
+The session concluded with a discussion of actionable steps that the Node.js community can take to improve the project's funding situation:
+
+- **Identify Funding Needs**: Clearly document the project's funding needs and priorities to ensure that potential contributors understand what is required.
+- **Engage with Companies**: Actively engage with companies to encourage them to contribute financially to the project. This could involve highlighting the benefits of supporting Node.js and the impact of their contributions.
+- **Explore Additional Funding Sources**: Continue to explore additional funding sources, such as Open Collective, GitHub Sponsors, and secure project funding.
+- **Prioritize Critical Tasks**: Ensure that available funds are used to support critical tasks such as security and CI maintenance.
+- **Improve Communication**: Improve communication with the broader community about the project's funding needs and how contributions are used. This could involve funding DevRel efforts to write blog posts and summarize the work of various working groups.
+- **Reduce Workload**: Consider reducing the project's workload by maintaining fewer active release lines to make the project more sustainable.
+
+## Documentation Improvements (Node.js learn section)
+
+The documentation session focused on improving the "Learn" section of the Node.js website, aiming to make it more accessible and up-to-date for newcomers and experienced developers alike. The discussion was led by Stephen Belanger ([@Qard](https://github.com/Qard)) and Claudio W ([@ovflowd](https://github.com/ovflowd)).
+
+### Key Points Discussed
+
+- **Website Redesign and Current State**: We discussed the ongoing website redesign and the current state of the documentation. The consensus was that the "Learn" section needs more attention and regular updates.
+
+- **Ownership and Responsibility**: We pointed out that there is no clear ownership of the content in the "Learn" section. This lack of responsibility makes it challenging to keep the documentation updated.
+
+- **Linking to Changes**: We suggested adding links in the "Learn" section to mention all the changes, making it easier for users to track updates.
+
+- **Last Updated/Reviewed**: We proposed adding a "last updated" or "last reviewed" section to reflect the currency of the documentation. This would help users understand how up-to-date the information is.
+
+- **Translation and Sync Issues**: We discussed the challenges of translating the "Learn" section. While Crowdin helps keep translations up-to-date, there were concerns about the potential for misinterpretations and the difficulty of maintaining external translations.
+
+- **Target Audience and Content Relevance**: We emphasized the importance of understanding the target audience for the "Learn" section. The discussion highlighted the need for a more structured flow that introduces basic concepts in a way that makes sense for beginners. It was noted that the current content includes deep topics like profiling but lacks essential content like HTTP, which can lead users to seek outdated information elsewhere.
+
+- **Content Creators and Contributors**: We suggested reaching out to known content creators to contribute to the "Learn" section. The idea of creating a scroll of "things that you should know" was also proposed to guide users through essential topics.
+
+- **External Content and Verification**: We suggested pointing to external content from the website, but Claudio raised concerns about the difficulty of verifying the quality and relevance of external resources.
+
+- **API Docs vs. Learn Section**: We clarified that the "Learn" section should not be a course but rather a guide with examples using the API docs. The goal is to provide practical examples and guidance rather than comprehensive tutorials.
+
+### Potential Action Items
+
+- **Identify Owners**: Establish clear ownership and responsibility for the "Learn" section to ensure regular updates and maintenance.
+
+- **Update Content**: Ensure that the "Learn" section is updated regularly to reflect the latest changes and best practices.
+
+- **Add Last Updated/Reviewed**: Implement a "last updated" or "last reviewed" section to indicate the currency of the documentation.
+
+- **Improve Translation Process**: Continue using Crowdin for translations but be mindful of potential misinterpretations and the challenges of maintaining external translations.
+
+- **Define Target Audience**: Clearly define the target audience for the "Learn" section and structure the content to meet their needs.
+
+- **Engage Content Creators**: Reach out to known content creators to contribute to the "Learn" section and create a scroll of essential topics.
+
+- **Verify External Content**: If pointing to external content, ensure that it is verified and relevant to the needs of Node.js users.
+
+- **Differentiate from API Docs**: Ensure that the "Learn" section provides practical examples and guidance rather than comprehensive tutorials, differentiating it from the API docs.
+
+## Module loading customization/optimization and CJS/ESM interoperability
+
+The session on module loading customization and CJS/ESM interoperability focused on several key areas, including the removal of the `--experimental-default-type` flag, marking syntax detection as stable, and documenting dual package shipping patterns. Joyee Cheung ([@joyeecheung](https://github.com/joyeecheung)), Matteo Collina ([@mcollina](https://github.com/mcollina)), Paolo Insogna ([@ShogunPanda](https://github.com/ShogunPanda)), and Geoffrey Booth ([@GeoffreyBooth](https://github.com/GeoffreyBooth)) proposed and led the session.
+
+### `--experimental-default-type`
+
+- **Removal Discussion**: There was a consensus that the `--experimental-default-type` flag could be removed, as no one in the room objected to its removal.
+- **Error Message Improvement**: It was noted that the error message from mixing CJS and ESM syntax could be improved.
+- **Next Steps**: It was suggested marking syntax detection as stable and dropping the default mode switch experiment. Others agreed, noting that there have been no complaints about the current implementation.
+- **Timeline for Removal**: We raised the question of when to remove the flag, suggesting it could be done in the next major or minor release. Some questioned the benefit of removing it now, while others pointed out the code complexity in keeping it.
+
+### Syntax Detection
+
+- **Stability**: The group discussed whether syntax detection could be marked as stable, given that it has been unflagged since July.
+
+### Documenting Dual Package Shipping Patterns
+
+- **Ecosystem Practices**: The discussion turned to documenting dual package shipping patterns and updating ecosystem practices. Some maintainers have decided not to support CJS users who run Node.js versions that don't support `require(esm)`.
+- **Guidance for Maintainers**: The consensus was that maintainers should be provided with different guides for different choices, as some may still want to support older versions of Node.js.
+- **Future Prospects**: We envisioned a future where shipping native ESM (only) in all packages would be feasible, as long as there is an easy method for users on older engines to seamlessly adapt/transpile a consistent compile source.
+
+### ESM as First Class
+
+- **Opinionated Documentation**: We suggested that the documentation could be more opinionated, telling people to write ESM and considering CommonJS as legacy (but still supported). This would move away from presenting both as equal first-class citizens.
+- **Learn Article**: We mentioned a potential Learn article that could be ported from the loaders example, providing practical guidance on configuring CommonJS and ESM for Node.js.
+
+### `node --init`
+
+- **Problem** (npm init): The group discussed the issue of `npm init` not making `"type": "module"` by default.
+- **Solution** (`node --init`): The proposed solution was to introduce a `node --init` command to create a `package.json` with `"type": "module"`. This could be extended to include `"scripts": {"test": "node --test"}` to bootstrap a project.
+- **Related Work**: We mentioned that the package maintenance working group (Node.js WG) is working on an [`pkgjs/create-package-json`](https://github.com/pkgjs/create-package-json) an alternative to `npm init`.
+
+> **⚠️ WARNING**: This is a proposal and not yet implemented. Also, it's may never be implemented.
+> Please don't take this for granted.
+
+### Missing Pieces of ESM
+
+- **Performance**: We mentioned a work-in-progress to remove async handling in the ESM loader, which is currently failing tests due to unexpected async activity. We noted that it is currently impossible for ESM to be faster than CJS, but it was mentioned that it would be possible when import defer eval is shipped in V8.
+- **Snapshot & SEA Support**: The group discussed the need for snapshot and SEA support in ESM.
+
+### Synchronous, In-thread & Universal Module Loader Customization Hooks
+
+- **Proposal Summary**: We summarized the new proposal for synchronous, in-thread, and universal module loader customization hooks.
+- **Escape Hatch**: We mentioned the initial motivation for making hooks async to support network loading and experiments with making async operations synchronous using a package called [`everysync`](https://www.npmjs.com/package/everysync).
+- **Migration Guide**: We confirmed that the plan before removing the async hooks is to write a migration guide including [`everysync`](https://www.npmjs.com/package/everysync) (or similar).
+
+### Summary
+
+The session on module loading customization and CJS/ESM interoperability highlighted the need for clear documentation, improved error messages, and a more opinionated approach to promoting ESM as a first-class citizen. The group also discussed the challenges and potential solutions for making ESM faster and more efficient, as well as the need for better tools and practices to facilitate the migration to ESM.
+
+## Facilitating Userland Migrations to New Features and Breaking Changes
+
+This session, presented by Jacob Smith ([@JakobJingleheimer](https://github.com/JakobJingleheimer)), focused on strategies and tools to facilitate the migration of userland code to new features and breaking changes in Node.js. The discussions revolved around codemods, lint rules, and best practices for managing these transitions.
+
+### Key Points Discussed
+
+#### Codemods
+
+- **Demonstration**: Jacob demonstrated the `ts-correct-specifier` codemod, which can help automate the migration process. This tool can be particularly useful for updating TypeScript specifiers to comply with new standards or changes in Node.js.
+- **Potential for Dependencies**: The group discussed the potential for codemods to be used not just for code but also for dependencies. This could help ensure that dependencies are updated to be compatible with new Node.js features and breaking changes.
+- **Dependabot Integration**: We suggested improved Dependabot integration to facilitate migrations. Dependabot can automatically create pull requests to update dependencies, making it easier to keep projects up-to-date.
+- **Registry for Migrated Projects**: The idea of maintaining a registry for projects that have already been migrated was proposed. This would help avoid redundant work and save compute resources by preventing the same migrations from being performed multiple times.
+- **Good First Issues**: We suggested creating a tracking issue in the Node.js repository for codemods that need to be developed. Tagging these issues as "good first issues" could encourage new contributors to get involved and help with the migration efforts.
+
+### Potential Action Items
+
+- **Develop and Promote Codemods**: Continue developing and promoting codemods to automate the migration process. Encourage the community to contribute to these tools and create new codemods as needed.
+- **Integrate with Dependabot**: Improve Dependabot integration to facilitate dependency updates and migrations. This could include creating custom Dependabot configurations or scripts to handle specific migration tasks.
+- **Create a Registry for Migrated Projects**: Maintain a registry of projects that have already been migrated to avoid redundant work and save compute resources. This could be done through a centralized repository or a tracking issue in the Node.js repository.
+
+## Node.js Diagnostics WG Meeting
+
+The Node.js Diagnostics Working Group (WG) meeting focused on several key areas related to diagnostics and observability in Node.js, including async context, diagnostics channels, and the future of the `import-in-the-middle` project. Stephen Belanger ([@Qard](https://github.com/Qard)) presented.
+
+### Async Context
+
+- **Current State**: Stephen presented some slides about async context, highlighting that it currently doesn't work very well with concurrency.
+- **Cache Behavior**: We discussed the cache behavior related to async context, noting that there hasn't been a conclusive solution yet.
+- **Documentation**: We pointed out that diagnostics documentation doesn't exist in the "Learn" section, and Augustin suggested that it might need an update from the guide section.
+
+### Future of `import-in-the-middle`
+
+- **Critical Package**: We discussed the critical role of `import-in-the-middle` for APM vendors, as it provides the ability to manipulate ESM modules and shim exports.
+- **Edge Cases**: We noted that there are too many edge cases that the package cannot support, particularly when modules modify their exports. Currently, APM vendors modify code in hooks, which has performance implications but is the best available solution.
+- **Diagnostics Channels**: We emphasized the need to plan and document packages that are broken and to provide a path for APM vendors. Suggested using diagnostics channels if possible.
+- **Monkey Patching**: We mentioned that diagnostics channels are useful, but there is still a need for some monkey patching abilities.
+
+### Diagnostics Channels and Observability
+
+- **Abort Control**: We discussed the possibility of using diagnostics channels for abort control, which is not possible with tracing channels.
+- **Monkey Patching**: The group discussed the ability to patch sources for transpilers but noted that relying on it for functionalities is brittle and depends on the discretion of hook authors.
+- **Live Debugging**: We talked about efforts to get live debugging, currently using the inspector protocol, and collaborating with V8 to improve this area.
+- **Transactional Memory**: We suggested exploring transactional memory, and Thomas mentioned ideas like thread pause optimization and copy-on-write for data processing.
+
+## Tooling Group Session
+
+The tooling group session focused on various aspects of improving the tooling ecosystem around Node.js, including social media engagement, handling experimental status, and facilitating migrations to new features and breaking changes. Presenting were Ruy Adorno ([@ruyadorno](https://github.com/ruyadorno)), Stephen Belanger ([@Qard](https://github.com/Qard)), and Wes Todd ([@wesleytodd](https://github.com/wesleytodd)).
+
+### Social Media Engagement
+
+- **Bluesky Platform**: We presented the `pkgjs` initiative and discussed the potential migration from the current social media platform to Bluesky. The rationale behind this move was the better engagement and open-source nature of Bluesky. At the time of publish, Node.js is present on Bluesky under the handle [@nodejs.org](https://bsky.app/profile/nodejs.org).
+- **Cross-Posting**: There was a suggestion to start with cross-posting to both platforms to ensure a smooth transition and maintain engagement with existing followers.
+- **Automation**: It was mentioned that Bluesky supports automation, which could be beneficial for managing social media presence.
+- **Foundation Involvement**: The discussion highlighted the need to involve the OpenJS Foundation in this decision and potentially take it to the Community Programs Committee (CPC) for further deliberation.
+- **Password Sharing**: We suggested sharing the social media account passwords using a secure method like OnePassword to streamline the posting process and reduce delays due to timezone differences.
+
+### Handling Experimental Status
+
+- **Experimental Features**: The group discussed the handling of experimental features, especially when their adoption becomes significant. It was noted that even though some features are experimental, they are widely used by the community, such as `module.register`.
+- **Timeline and Expectations**: We emphasized the importance of setting clear expectations and timelines for experimental features. This includes providing warnings before major changes and ensuring clear documentation about the status and upcoming changes.
+- **Opt-In Mechanisms**: There was a discussion on making experimental features opt-in via API or flags, especially for library authors who might rely on these features.
+- **Lint Rules and Codemods**: We suggested using lint rules to enforce best practices and codemods to facilitate migrations. It was cautioned that changing people's behavior is challenging and requires incentives rather than enforcement.
+
+## Thanks
+
+Thank you to all the attendees! Special appreciation goes to the Baseline team for hosting the summit and creating a welcoming space for the Node.js community.
+
+A big thanks as well to Claudio W ([@ovflowd](https://github.com/ovflowd)), Matteo Collina ([@mcollina](https://github.com/mcollina)), Robin Bender Ginn ([@rginn](https://github.com/rginn)), and the [OpenJS Foundation](https://openjsf.org) for organizing and making this event possible.
diff --git a/apps/site/site.json b/apps/site/site.json
index 8613581d70fae..29a6f8c2915d4 100644
--- a/apps/site/site.json
+++ b/apps/site/site.json
@@ -37,12 +37,12 @@
},
"websiteBadges": {
"index": {
- "startDate": "2024-09-01T00:00:00.000Z",
- "endDate": "2024-10-01T00:00:00.000Z",
+ "startDate": "2024-11-01T00:00:00.000Z",
+ "endDate": "2024-12-31T00:00:00.000Z",
"kind": "default",
- "title": "Discover",
- "text": "TypeScript in Node.js",
- "link": "https://nodejs.org/en/learn/typescript/introduction/"
+ "title": "Read",
+ "text": "Node.js Collab Summit Report",
+ "link": "https://nodejs.org/en/blog/events/collab-summit-2024-dublin"
}
}
}
From 21c810bc1d1febef9448ab086a160161e0aa6261 Mon Sep 17 00:00:00 2001
From: Claudio W
Date: Sat, 23 Nov 2024 01:29:14 +0000
Subject: [PATCH 06/65] fix: align mdx (#7276)
---
apps/site/pages/en/index.mdx | 9 +-
apps/site/pages/es/index.mdx | 247 +++++++++++++++---------------
apps/site/pages/fa/index.mdx | 251 +++++++++++++++----------------
apps/site/pages/fr/index.mdx | 248 +++++++++++++++---------------
apps/site/pages/id/index.mdx | 247 +++++++++++++++---------------
apps/site/pages/ja/index.mdx | 246 +++++++++++++++---------------
apps/site/pages/ko/index.mdx | 246 +++++++++++++++---------------
apps/site/pages/pt/index.mdx | 247 +++++++++++++++---------------
apps/site/pages/tr/index.mdx | 259 ++++++++++++++++----------------
apps/site/pages/uk/index.mdx | 247 +++++++++++++++---------------
apps/site/pages/zh-cn/index.mdx | 250 +++++++++++++++---------------
apps/site/pages/zh-tw/index.mdx | 246 +++++++++++++++---------------
apps/site/tsconfig.json | 3 -
13 files changed, 1353 insertions(+), 1393 deletions(-)
diff --git a/apps/site/pages/en/index.mdx b/apps/site/pages/en/index.mdx
index 3e28f190a40aa..c3307276a6bb0 100644
--- a/apps/site/pages/en/index.mdx
+++ b/apps/site/pages/en/index.mdx
@@ -4,14 +4,13 @@ layout: home
---
-
+
Run JavaScript Everywhere
- Node.js® is a free, open-source, cross-platform JavaScript runtime
- environment that lets developers create servers, web apps,
- command line tools and scripts.
+ Node.js® is a free, open-source, cross-platform JavaScript runtime environment
+ that lets developers create servers, web apps, command line tools and scripts.
-
-Node.js® es un entorno de ejecución de JavaScript multiplataforma, de código abierto y gratuito que permite a los desarrolladores crear servidores, aplicaciones web, herramientas de línea de comando y scripts.
-
-
+
+ Node.js® es un entorno de ejecución de JavaScript multiplataforma,
+ de código abierto y gratuito que permite a los desarrolladores crear servidores,
+ aplicaciones web, herramientas de línea de comando y scripts.
+
+
+
+
+
+ {({ release }) => (
+ <>
+ Descargar Node.js (LTS)
+
+ Descarga Node.js {release.versionWithPrefix}
+ 1 con soporte a largo plazo.
+ Node.js también puede ser instalado a través de gestores de paquetes.
+
+ >
+ )}
+
+
+
+ {({ release }) => (
- Descarga Node.js {release.versionWithPrefix}
- 1 con soporte a largo plazo.
- Node.js también puede ser instalado a través de gestores de paquetes.
+ ¿Quieres nuevas funciones más pronto?
+ ConsigueNode.js {release.versionWithPrefix}
+ 1 en vez.
- >
- )}
-
-
-
- {({ release }) => (
-
- ¿Quieres nuevas funciones más pronto?
- ConsigueNode.js {release.versionWithPrefix}
- 1 en vez.
-
- )}
-
-
+ )}
+
+
+
-
- ```js displayName="Create an HTTP Server"
- // server.mjs
- import { createServer } from 'node:http';
-
-const server = createServer((req, res) => {
-res.writeHead(200, { 'Content-Type': 'text/plain' });
-res.end('Hello World!\n');
-});
-
-// starts a simple http server locally on port 3000
-server.listen(3000, '127.0.0.1', () => {
-console.log('Listening on 127.0.0.1:3000');
-});
-
-// run with `node server.mjs`
-
-````
-
-```js displayName="Write Tests"
-// tests.mjs
-import assert from 'node:assert';
-import test from 'node:test';
-
-test('that 1 is equal 1', () => {
- assert.strictEqual(1, 1);
-});
-
-test('that throws as 1 is not equal 2', () => {
- // throws an exception because 1 != 2
- assert.strictEqual(1, 2);
-});
-
-// run with `node tests.mjs`
-````
-
-```js displayName="Read and Hash a File"
-// crypto.mjs
-import { createHash } from 'node:crypto';
-import { readFile } from 'node:fs/promises';
-
-const hasher = createHash('sha1');
-
-hasher.setEncoding('hex');
-// ensure you have a `package.json` file for this test!
-hasher.write(await readFile('package.json'));
-hasher.end();
-
-const fileHash = hasher.read();
-
-// run with `node crypto.mjs`
-```
-
-```js displayName="Streams Pipeline"
-// streams.mjs
-import { pipeline } from 'node:stream/promises';
-import { createReadStream, createWriteStream } from 'node:fs';
-import { createGzip } from 'node:zlib';
-
-// ensure you have a `package.json` file for this test!
-await pipeline(
- createReadStream('package.json'),
- createGzip(),
- createWriteStream('package.json.gz')
-);
-
-// run with `node streams.mjs`
-```
-
-```js displayName="Work with Threads"
-// threads.mjs
-import {
- Worker,
- isMainThread,
- workerData,
- parentPort,
-} from 'node:worker_threads';
-
-if (isMainThread) {
- const data = 'some data';
- const worker = new Worker(import.meta.filename, { workerData: data });
- worker.on('message', msg => console.log('Reply from Thread:', msg));
-} else {
- const source = workerData;
- parentPort.postMessage(btoa(source.toUpperCase()));
-}
-
-// run with `node threads.mjs`
-```
-
-
-
-Aprenda más sobre lo que Node.js puede ofrecer con nuestros [Materiales de aprendizaje](/learn).
-
+
+ ```js displayName="Create an HTTP Server"
+ // server.mjs
+ import { createServer } from 'node:http';
+
+ const server = createServer((req, res) => {
+ res.writeHead(200, { 'Content-Type': 'text/plain' });
+ res.end('Hello World!\n');
+ });
+
+ // starts a simple http server locally on port 3000
+ server.listen(3000, '127.0.0.1', () => {
+ console.log('Listening on 127.0.0.1:3000');
+ });
+
+ // run with `node server.mjs`
+ ```
+
+ ```js displayName="Write Tests"
+ // tests.mjs
+ import assert from 'node:assert';
+ import test from 'node:test';
+
+ test('that 1 is equal 1', () => {
+ assert.strictEqual(1, 1);
+ });
+
+ test('that throws as 1 is not equal 2', () => {
+ // throws an exception because 1 != 2
+ assert.strictEqual(1, 2);
+ });
+
+ // run with `node tests.mjs`
+ ```
+
+ ```js displayName="Read and Hash a File"
+ // crypto.mjs
+ import { createHash } from 'node:crypto';
+ import { readFile } from 'node:fs/promises';
+
+ const hasher = createHash('sha1');
+
+ hasher.setEncoding('hex');
+ // ensure you have a `package.json` file for this test!
+ hasher.write(await readFile('package.json'));
+ hasher.end();
+
+ const fileHash = hasher.read();
+
+ // run with `node crypto.mjs`
+ ```
+
+ ```js displayName="Streams Pipeline"
+ // streams.mjs
+ import { pipeline } from 'node:stream/promises';
+ import { createReadStream, createWriteStream } from 'node:fs';
+ import { createGzip } from 'node:zlib';
+
+ // ensure you have a `package.json` file for this test!
+ await pipeline
+ (
+ createReadStream('package.json'),
+ createGzip(),
+ createWriteStream('package.json.gz')
+ );
+
+ // run with `node streams.mjs`
+ ```
+
+ ```js displayName="Work with Threads"
+ // threads.mjs
+ import { Worker, isMainThread,
+ workerData, parentPort } from 'node:worker_threads';
+
+ if (isMainThread) {
+ const data = 'some data';
+ const worker = new Worker(import.meta.filename, { workerData: data });
+ worker.on('message', msg => console.log('Reply from Thread:', msg));
+ } else {
+ const source = workerData;
+ parentPort.postMessage(btoa(source.toUpperCase()));
+ }
+
+ // run with `node threads.mjs`
+ ```
+
+
+ Aprenda más sobre lo que Node.js puede ofrecer con nuestros [Materiales de aprendizaje](/learn).
diff --git a/apps/site/pages/fa/index.mdx b/apps/site/pages/fa/index.mdx
index 9d3fe4caa073b..10b0356201947 100644
--- a/apps/site/pages/fa/index.mdx
+++ b/apps/site/pages/fa/index.mdx
@@ -4,136 +4,131 @@ layout: home
---
-
-
-
-
اجرا جاوااسکریپت در همه جا
-
-Node.js یک محیط اجرای جاوااسکریپت متنباز، رایگان و چندسکویی است
-که به توسعه دهندگان اجازه میدهد تا سرورها، وب اپلیکیشنها
-ابزارهای خط فرمان و اسکریپتها را ایجاد کنند.
-
-
+
+ Node.js یک محیط اجرای جاوااسکریپت متنباز، رایگان و چندسکویی است
+ که به توسعه دهندگان اجازه میدهد تا سرورها، وب اپلیکیشنها
+ ابزارهای خط فرمان و اسکریپتها را ایجاد کنند.
+
+
+
+
+
+ {({ release }) => (
+ <>
+ دانلود Node.js (نسخه پایدار)
+
+ دانلود Node.js {release.versionWithPrefix}
+ 1 با پشتیبانی بلندمدت.
+ Node.js همچنین از طریق package managers نیز قابل نصب است.
+
+ >
+ )}
+
+
+
+ {({ release }) => (
- دانلود Node.js {release.versionWithPrefix}
- 1 با پشتیبانی بلندمدت.
- Node.js همچنین از طریق package managers نیز قابل نصب است.
+ میخواهید زودتر از ویژگیهای جدید برخوردار شوید؟
+ بهجای آن Node.js {release.versionWithPrefix}
+ 1 را دریافت کنید.
- >
- )}
-
-
-
- {({ release }) => (
-
- میخواهید زودتر از ویژگیهای جدید برخوردار شوید؟
- بهجای آن Node.js {release.versionWithPrefix}
- 1 را دریافت کنید.
-
- )}
-
-
+ )}
+
+
+
-
- ```js displayName="Create an HTTP Server"
- // server.mjs
- import { createServer } from 'node:http';
-
-const server = createServer((req, res) => {
-res.writeHead(200, { 'Content-Type': 'text/plain' });
-res.end('Hello World!\n');
-});
-
-// starts a simple http server locally on port 3000
-server.listen(3000, '127.0.0.1', () => {
-console.log('Listening on 127.0.0.1:3000');
-});
-
-// run with `node server.mjs`
-
-````
-
-```js displayName="Write Tests"
-// tests.mjs
-import assert from 'node:assert';
-import test from 'node:test';
-
-test('that 1 is equal 1', () => {
- assert.strictEqual(1, 1);
-});
-
-test('that throws as 1 is not equal 2', () => {
- // throws an exception because 1 != 2
- assert.strictEqual(1, 2);
-});
-
-// run with `node tests.mjs`
-````
-
-```js displayName="Read and Hash a File"
-// crypto.mjs
-import { createHash } from 'node:crypto';
-import { readFile } from 'node:fs/promises';
-
-const hasher = createHash('sha1');
-
-hasher.setEncoding('hex');
-// ensure you have a `package.json` file for this test!
-hasher.write(await readFile('package.json'));
-hasher.end();
-
-const fileHash = hasher.read();
-
-// run with `node crypto.mjs`
-```
-
-```js displayName="Streams Pipeline"
-// streams.mjs
-import { pipeline } from 'node:stream/promises';
-import { createReadStream, createWriteStream } from 'node:fs';
-import { createGzip } from 'node:zlib';
-
-// ensure you have a `package.json` file for this test!
-await pipeline(
- createReadStream('package.json'),
- createGzip(),
- createWriteStream('package.json.gz')
-);
-
-// run with `node streams.mjs`
-```
-
-```js displayName="Work with Threads"
-// threads.mjs
-import {
- Worker,
- isMainThread,
- workerData,
- parentPort,
-} from 'node:worker_threads';
-
-if (isMainThread) {
- const data = 'some data';
- const worker = new Worker(import.meta.filename, { workerData: data });
- worker.on('message', msg => console.log('Reply from Thread:', msg));
-} else {
- const source = workerData;
- parentPort.postMessage(btoa(source.toUpperCase()));
-}
-
-// run with `node threads.mjs`
-```
-
-
-
-با [مطالب آموزشی](/learn) ما، بیشتر در مورد اینکه Node.js چه امکاناتی را ارائه می دهد بیاموزید.
-
-
+
+ ```js displayName="Create an HTTP Server"
+ // server.mjs
+ import { createServer } from 'node:http';
+
+ const server = createServer((req, res) => {
+ res.writeHead(200, { 'Content-Type': 'text/plain' });
+ res.end('Hello World!\n');
+ });
+
+ // starts a simple http server locally on port 3000
+ server.listen(3000, '127.0.0.1', () => {
+ console.log('Listening on 127.0.0.1:3000');
+ });
+
+ // run with `node server.mjs`
+ ```
+
+ ```js displayName="Write Tests"
+ // tests.mjs
+ import assert from 'node:assert';
+ import test from 'node:test';
+
+ test('that 1 is equal 1', () => {
+ assert.strictEqual(1, 1);
+ });
+
+ test('that throws as 1 is not equal 2', () => {
+ // throws an exception because 1 != 2
+ assert.strictEqual(1, 2);
+ });
+
+ // run with `node tests.mjs`
+ ```
+
+ ```js displayName="Read and Hash a File"
+ // crypto.mjs
+ import { createHash } from 'node:crypto';
+ import { readFile } from 'node:fs/promises';
+
+ const hasher = createHash('sha1');
+
+ hasher.setEncoding('hex');
+ // ensure you have a `package.json` file for this test!
+ hasher.write(await readFile('package.json'));
+ hasher.end();
+
+ const fileHash = hasher.read();
+
+ // run with `node crypto.mjs`
+ ```
+
+ ```js displayName="Streams Pipeline"
+ // streams.mjs
+ import { pipeline } from 'node:stream/promises';
+ import { createReadStream, createWriteStream } from 'node:fs';
+ import { createGzip } from 'node:zlib';
+
+ // ensure you have a `package.json` file for this test!
+ await pipeline
+ (
+ createReadStream('package.json'),
+ createGzip(),
+ createWriteStream('package.json.gz')
+ );
+
+ // run with `node streams.mjs`
+ ```
+
+ ```js displayName="Work with Threads"
+ // threads.mjs
+ import { Worker, isMainThread,
+ workerData, parentPort } from 'node:worker_threads';
+
+ if (isMainThread) {
+ const data = 'some data';
+ const worker = new Worker(import.meta.filename, { workerData: data });
+ worker.on('message', msg => console.log('Reply from Thread:', msg));
+ } else {
+ const source = workerData;
+ parentPort.postMessage(btoa(source.toUpperCase()));
+ }
+
+ // run with `node threads.mjs`
+ ```
+
+
+ با [مطالب آموزشی](/learn) ما، بیشتر در مورد اینکه Node.js چه امکاناتی را ارائه می دهد بیاموزید.
+
diff --git a/apps/site/pages/fr/index.mdx b/apps/site/pages/fr/index.mdx
index a397a26bda193..960d8f0e583d7 100644
--- a/apps/site/pages/fr/index.mdx
+++ b/apps/site/pages/fr/index.mdx
@@ -4,135 +4,133 @@ layout: home
---
-
-
-
-
Exécuter du JavaScript partout
-
-Node.js® est un environnement d'exécution JavaScript gratuit, open-source et multiplateforme qui permet aux développeurs de créer des serveurs, des applications web et des applications de gestion de contenu.
-qui permet aux développeurs de créer des serveurs, des applications web, des outils en ligne de commande et des scripts.
-
-
+
+
+
+
Exécuter du JavaScript partout
+
+ Node.js® est un environnement d'exécution JavaScript gratuit,
+ open-source et multiplateforme qui permet aux développeurs de créer des serveurs,
+ des applications web et des applications de gestion de contenu. qui permet
+ aux développeurs de créer des serveurs, des applications web, des outils en
+ ligne de commande et des scripts.
+
+
+
+
+
+ {({ release }) => (
+ <>
+ Télécharger Node.js (LTS)
+
+ Télécharger Node.js {release.versionWithPrefix}
+ 1 avec un support à long terme.
+ Node.js peut également être installé via gestionnaires de paquets.
+
+ >
+ )}
+
-
-
- {({ release }) => (
- <>
- Télécharger Node.js (LTS)
+
+ {({ release }) => (
- Télécharger Node.js {release.versionWithPrefix}
- 1 avec un support à long terme.
- Node.js peut également être installé via gestionnaires de paquets.
+ Vous voulez de nouvelles fonctionnalités plus tôt ?
+ Obtenez Node.js {release.versionWithPrefix}
+ 1 à la place.
- >
- )}
-
-
-
- {({ release }) => (
-
- Vous voulez de nouvelles fonctionnalités plus tôt ?
- Obtenez Node.js {release.versionWithPrefix}
- 1 à la place.
-
- )}
-
-
+ )}
+
+
+
-
- ```js displayName="Create an HTTP Server"
- // server.mjs
- import { createServer } from 'node:http';
-
-const server = createServer((req, res) => {
-res.writeHead(200, { 'Content-Type': 'text/plain' });
-res.end('Hello World!\n');
-});
-
-// starts a simple http server locally on port 3000
-server.listen(3000, '127.0.0.1', () => {
-console.log('Listening on 127.0.0.1:3000');
-});
-
-// run with `node server.mjs`
-
-````
-
-```js displayName="Write Tests"
-// tests.mjs
-import assert from 'node:assert';
-import test from 'node:test';
-
-test('that 1 is equal 1', () => {
- assert.strictEqual(1, 1);
-});
-
-test('that throws as 1 is not equal 2', () => {
- // throws an exception because 1 != 2
- assert.strictEqual(1, 2);
-});
-
-// run with `node tests.mjs`
-````
-
-```js displayName="Read and Hash a File"
-// crypto.mjs
-import { createHash } from 'node:crypto';
-import { readFile } from 'node:fs/promises';
-
-const hasher = createHash('sha1');
-
-hasher.setEncoding('hex');
-// ensure you have a `package.json` file for this test!
-hasher.write(await readFile('package.json'));
-hasher.end();
-
-const fileHash = hasher.read();
-
-// run with `node crypto.mjs`
-```
-
-```js displayName="Streams Pipeline"
-// streams.mjs
-import { pipeline } from 'node:stream/promises';
-import { createReadStream, createWriteStream } from 'node:fs';
-import { createGzip } from 'node:zlib';
-
-// ensure you have a `package.json` file for this test!
-await pipeline(
- createReadStream('package.json'),
- createGzip(),
- createWriteStream('package.json.gz')
-);
-
-// run with `node streams.mjs`
-```
-
-```js displayName="Work with Threads"
-// threads.mjs
-import {
- Worker,
- isMainThread,
- workerData,
- parentPort,
-} from 'node:worker_threads';
-
-if (isMainThread) {
- const data = 'some data';
- const worker = new Worker(import.meta.filename, { workerData: data });
- worker.on('message', msg => console.log('Reply from Thread:', msg));
-} else {
- const source = workerData;
- parentPort.postMessage(btoa(source.toUpperCase()));
-}
-
-// run with `node threads.mjs`
-```
-
-
-
-Apprenez-en plus sur ce que Node.js est capable d'offrir avec notre [Matériel d'apprentissage](/learn).
-
+
+ ```js displayName="Create an HTTP Server"
+ // server.mjs
+ import { createServer } from 'node:http';
+
+ const server = createServer((req, res) => {
+ res.writeHead(200, { 'Content-Type': 'text/plain' });
+ res.end('Hello World!\n');
+ });
+
+ // starts a simple http server locally on port 3000
+ server.listen(3000, '127.0.0.1', () => {
+ console.log('Listening on 127.0.0.1:3000');
+ });
+
+ // run with `node server.mjs`
+ ```
+
+ ```js displayName="Write Tests"
+ // tests.mjs
+ import assert from 'node:assert';
+ import test from 'node:test';
+
+ test('that 1 is equal 1', () => {
+ assert.strictEqual(1, 1);
+ });
+
+ test('that throws as 1 is not equal 2', () => {
+ // throws an exception because 1 != 2
+ assert.strictEqual(1, 2);
+ });
+
+ // run with `node tests.mjs`
+ ```
+
+ ```js displayName="Read and Hash a File"
+ // crypto.mjs
+ import { createHash } from 'node:crypto';
+ import { readFile } from 'node:fs/promises';
+
+ const hasher = createHash('sha1');
+
+ hasher.setEncoding('hex');
+ // ensure you have a `package.json` file for this test!
+ hasher.write(await readFile('package.json'));
+ hasher.end();
+
+ const fileHash = hasher.read();
+
+ // run with `node crypto.mjs`
+ ```
+
+ ```js displayName="Streams Pipeline"
+ // streams.mjs
+ import { pipeline } from 'node:stream/promises';
+ import { createReadStream, createWriteStream } from 'node:fs';
+ import { createGzip } from 'node:zlib';
+
+ // ensure you have a `package.json` file for this test!
+ await pipeline
+ (
+ createReadStream('package.json'),
+ createGzip(),
+ createWriteStream('package.json.gz')
+ );
+
+ // run with `node streams.mjs`
+ ```
+
+ ```js displayName="Work with Threads"
+ // threads.mjs
+ import { Worker, isMainThread,
+ workerData, parentPort } from 'node:worker_threads';
+
+ if (isMainThread) {
+ const data = 'some data';
+ const worker = new Worker(import.meta.filename, { workerData: data });
+ worker.on('message', msg => console.log('Reply from Thread:', msg));
+ } else {
+ const source = workerData;
+ parentPort.postMessage(btoa(source.toUpperCase()));
+ }
+
+ // run with `node threads.mjs`
+ ```
+
+
+ Apprenez-en plus sur ce que Node.js est capable d'offrir avec notre [Matériel d'apprentissage](/learn).
diff --git a/apps/site/pages/id/index.mdx b/apps/site/pages/id/index.mdx
index 530b6a53daf62..ae44c2e9515e5 100644
--- a/apps/site/pages/id/index.mdx
+++ b/apps/site/pages/id/index.mdx
@@ -4,134 +4,131 @@ layout: home
---
-
-
-
-
Jalankan JavaScript Di Mana Saja
-
-Node.js® adalah lingkungan runtime JavaScript gratis dan sumber terbuka yang lintas platform, yang memungkinkan pengembang membuat server, aplikasi web, alat baris perintah, dan skrip.
-
-
+
+ Node.js® adalah lingkungan runtime JavaScript gratis dan sumber terbuka yang
+ lintas platform, yang memungkinkan pengembang membuat server, aplikasi web,
+ alat baris perintah, dan skrip.
+
+
+
+
+
+ {({ release }) => (
+ <>
+ Unduh Node.js (LTS)
+
+ Unduhan Node.js {release.versionWithPrefix}
+ 1 dengan dukungan jangka panjang (LTS).
+ Node.js juga dapat diinstal melalui manajer paket.
+
+ >
+ )}
+
+
+
+ {({ release }) => (
- Unduhan Node.js {release.versionWithPrefix}
- 1 dengan dukungan jangka panjang (LTS).
- Node.js juga dapat diinstal melalui manajer paket.
+ Ingin fitur baru lebih cepat?
+ Dapatkan Node.js {release.versionWithPrefix}
+ 1 sebagai gantinya.
- >
- )}
-
-
-
- {({ release }) => (
-
- Ingin fitur baru lebih cepat?
- Dapatkan Node.js {release.versionWithPrefix}
- 1 sebagai gantinya.
-
- )}
-
-
+ )}
+
+
+
-
- ```js displayName="Create an HTTP Server"
- // server.mjs
- import { createServer } from 'node:http';
-
-const server = createServer((req, res) => {
-res.writeHead(200, { 'Content-Type': 'text/plain' });
-res.end('Hello World!\n');
-});
-
-// starts a simple http server locally on port 3000
-server.listen(3000, '127.0.0.1', () => {
-console.log('Listening on 127.0.0.1:3000');
-});
-
-// run with `node server.mjs`
-
-````
-
-```js displayName="Write Tests"
-// tests.mjs
-import assert from 'node:assert';
-import test from 'node:test';
-
-test('that 1 is equal 1', () => {
- assert.strictEqual(1, 1);
-});
-
-test('that throws as 1 is not equal 2', () => {
- // throws an exception because 1 != 2
- assert.strictEqual(1, 2);
-});
-
-// run with `node tests.mjs`
-````
-
-```js displayName="Read and Hash a File"
-// crypto.mjs
-import { createHash } from 'node:crypto';
-import { readFile } from 'node:fs/promises';
-
-const hasher = createHash('sha1');
-
-hasher.setEncoding('hex');
-// ensure you have a `package.json` file for this test!
-hasher.write(await readFile('package.json'));
-hasher.end();
-
-const fileHash = hasher.read();
-
-// run with `node crypto.mjs`
-```
-
-```js displayName="Streams Pipeline"
-// streams.mjs
-import { pipeline } from 'node:stream/promises';
-import { createReadStream, createWriteStream } from 'node:fs';
-import { createGzip } from 'node:zlib';
-
-// ensure you have a `package.json` file for this test!
-await pipeline(
- createReadStream('package.json'),
- createGzip(),
- createWriteStream('package.json.gz')
-);
-
-// run with `node streams.mjs`
-```
-
-```js displayName="Work with Threads"
-// threads.mjs
-import {
- Worker,
- isMainThread,
- workerData,
- parentPort,
-} from 'node:worker_threads';
-
-if (isMainThread) {
- const data = 'some data';
- const worker = new Worker(import.meta.filename, { workerData: data });
- worker.on('message', msg => console.log('Reply from Thread:', msg));
-} else {
- const source = workerData;
- parentPort.postMessage(btoa(source.toUpperCase()));
-}
-
-// run with `node threads.mjs`
-```
-
-
-
-Pelajari lebih lanjut tentang apa yang bisa ditawarkan Node.js melalui [Bahan Pembelajaran](/learn) kami.
-
+
+ ```js displayName="Create an HTTP Server"
+ // server.mjs
+ import { createServer } from 'node:http';
+
+ const server = createServer((req, res) => {
+ res.writeHead(200, { 'Content-Type': 'text/plain' });
+ res.end('Hello World!\n');
+ });
+
+ // starts a simple http server locally on port 3000
+ server.listen(3000, '127.0.0.1', () => {
+ console.log('Listening on 127.0.0.1:3000');
+ });
+
+ // run with `node server.mjs`
+ ```
+
+ ```js displayName="Write Tests"
+ // tests.mjs
+ import assert from 'node:assert';
+ import test from 'node:test';
+
+ test('that 1 is equal 1', () => {
+ assert.strictEqual(1, 1);
+ });
+
+ test('that throws as 1 is not equal 2', () => {
+ // throws an exception because 1 != 2
+ assert.strictEqual(1, 2);
+ });
+
+ // run with `node tests.mjs`
+ ```
+
+ ```js displayName="Read and Hash a File"
+ // crypto.mjs
+ import { createHash } from 'node:crypto';
+ import { readFile } from 'node:fs/promises';
+
+ const hasher = createHash('sha1');
+
+ hasher.setEncoding('hex');
+ // ensure you have a `package.json` file for this test!
+ hasher.write(await readFile('package.json'));
+ hasher.end();
+
+ const fileHash = hasher.read();
+
+ // run with `node crypto.mjs`
+ ```
+
+ ```js displayName="Streams Pipeline"
+ // streams.mjs
+ import { pipeline } from 'node:stream/promises';
+ import { createReadStream, createWriteStream } from 'node:fs';
+ import { createGzip } from 'node:zlib';
+
+ // ensure you have a `package.json` file for this test!
+ await pipeline
+ (
+ createReadStream('package.json'),
+ createGzip(),
+ createWriteStream('package.json.gz')
+ );
+
+ // run with `node streams.mjs`
+ ```
+
+ ```js displayName="Work with Threads"
+ // threads.mjs
+ import { Worker, isMainThread,
+ workerData, parentPort } from 'node:worker_threads';
+
+ if (isMainThread) {
+ const data = 'some data';
+ const worker = new Worker(import.meta.filename, { workerData: data });
+ worker.on('message', msg => console.log('Reply from Thread:', msg));
+ } else {
+ const source = workerData;
+ parentPort.postMessage(btoa(source.toUpperCase()));
+ }
+
+ // run with `node threads.mjs`
+ ```
+
+
+ Pelajari lebih lanjut tentang apa yang bisa ditawarkan Node.js melalui [Bahan Pembelajaran](/learn) kami.
diff --git a/apps/site/pages/ja/index.mdx b/apps/site/pages/ja/index.mdx
index 0853e6b7bfa6d..c886eb3ebd072 100644
--- a/apps/site/pages/ja/index.mdx
+++ b/apps/site/pages/ja/index.mdx
@@ -4,134 +4,130 @@ layout: home
---
-
-
-
+
+ {({ release }) => (
+ <>
+ Node.js 다운로드 (LTS)
+
+ Node.js 다운로드 {release.versionWithPrefix}
+ 1 LTS.
+ Node.js는 package managers를 통해서도 다운로드 할 수 있습니다..
+
+ >
+ )}
+
+
+
+ {({ release }) => (
- Node.js 다운로드 {release.versionWithPrefix}
- 1 LTS.
- Node.js는 package managers를 통해서도 다운로드 할 수 있습니다..
+ 새로운 기능을 먼저 경험하고 싶다면
+ Node.js {release.versionWithPrefix}
+ 1 를 다운 받으세요.
- >
- )}
-
-
-
- {({ release }) => (
-
- 새로운 기능을 먼저 경험하고 싶다면
- Node.js {release.versionWithPrefix}
- 1 를 다운 받으세요.
-
- )}
-
-
+ )}
+
+
+
-
- ```js displayName="Create an HTTP Server"
- // server.mjs
- import { createServer } from 'node:http';
-
-const server = createServer((req, res) => {
-res.writeHead(200, { 'Content-Type': 'text/plain' });
-res.end('Hello World!\n');
-});
-
-// starts a simple http server locally on port 3000
-server.listen(3000, '127.0.0.1', () => {
-console.log('Listening on 127.0.0.1:3000');
-});
-
-// run with `node server.mjs`
-
-````
-
-```js displayName="Write Tests"
-// tests.mjs
-import assert from 'node:assert';
-import test from 'node:test';
-
-test('that 1 is equal 1', () => {
- assert.strictEqual(1, 1);
-});
-
-test('that throws as 1 is not equal 2', () => {
- // throws an exception because 1 != 2
- assert.strictEqual(1, 2);
-});
-
-// run with `node tests.mjs`
-````
-
-```js displayName="Read and Hash a File"
-// crypto.mjs
-import { createHash } from 'node:crypto';
-import { readFile } from 'node:fs/promises';
-
-const hasher = createHash('sha1');
-
-hasher.setEncoding('hex');
-// ensure you have a `package.json` file for this test!
-hasher.write(await readFile('package.json'));
-hasher.end();
-
-const fileHash = hasher.read();
-
-// run with `node crypto.mjs`
-```
-
-```js displayName="Streams Pipeline"
-// streams.mjs
-import { pipeline } from 'node:stream/promises';
-import { createReadStream, createWriteStream } from 'node:fs';
-import { createGzip } from 'node:zlib';
-
-// ensure you have a `package.json` file for this test!
-await pipeline(
- createReadStream('package.json'),
- createGzip(),
- createWriteStream('package.json.gz')
-);
-
-// run with `node streams.mjs`
-```
-
-```js displayName="Work with Threads"
-// threads.mjs
-import {
- Worker,
- isMainThread,
- workerData,
- parentPort,
-} from 'node:worker_threads';
-
-if (isMainThread) {
- const data = 'some data';
- const worker = new Worker(import.meta.filename, { workerData: data });
- worker.on('message', msg => console.log('Reply from Thread:', msg));
-} else {
- const source = workerData;
- parentPort.postMessage(btoa(source.toUpperCase()));
-}
-
-// run with `node threads.mjs`
-```
-
-
-
-Node.js에 대해 더 알고 싶다면 학습 자료를 확인하세요[Learning materials](/learn).
-
+
+ ```js displayName="Create an HTTP Server"
+ // server.mjs
+ import { createServer } from 'node:http';
+
+ const server = createServer((req, res) => {
+ res.writeHead(200, { 'Content-Type': 'text/plain' });
+ res.end('Hello World!\n');
+ });
+
+ // starts a simple http server locally on port 3000
+ server.listen(3000, '127.0.0.1', () => {
+ console.log('Listening on 127.0.0.1:3000');
+ });
+
+ // run with `node server.mjs`
+ ```
+
+ ```js displayName="Write Tests"
+ // tests.mjs
+ import assert from 'node:assert';
+ import test from 'node:test';
+
+ test('that 1 is equal 1', () => {
+ assert.strictEqual(1, 1);
+ });
+
+ test('that throws as 1 is not equal 2', () => {
+ // throws an exception because 1 != 2
+ assert.strictEqual(1, 2);
+ });
+
+ // run with `node tests.mjs`
+ ```
+
+ ```js displayName="Read and Hash a File"
+ // crypto.mjs
+ import { createHash } from 'node:crypto';
+ import { readFile } from 'node:fs/promises';
+
+ const hasher = createHash('sha1');
+
+ hasher.setEncoding('hex');
+ // ensure you have a `package.json` file for this test!
+ hasher.write(await readFile('package.json'));
+ hasher.end();
+
+ const fileHash = hasher.read();
+
+ // run with `node crypto.mjs`
+ ```
+
+ ```js displayName="Streams Pipeline"
+ // streams.mjs
+ import { pipeline } from 'node:stream/promises';
+ import { createReadStream, createWriteStream } from 'node:fs';
+ import { createGzip } from 'node:zlib';
+
+ // ensure you have a `package.json` file for this test!
+ await pipeline
+ (
+ createReadStream('package.json'),
+ createGzip(),
+ createWriteStream('package.json.gz')
+ );
+
+ // run with `node streams.mjs`
+ ```
+
+ ```js displayName="Work with Threads"
+ // threads.mjs
+ import { Worker, isMainThread,
+ workerData, parentPort } from 'node:worker_threads';
+
+ if (isMainThread) {
+ const data = 'some data';
+ const worker = new Worker(import.meta.filename, { workerData: data });
+ worker.on('message', msg => console.log('Reply from Thread:', msg));
+ } else {
+ const source = workerData;
+ parentPort.postMessage(btoa(source.toUpperCase()));
+ }
+
+ // run with `node threads.mjs`
+ ```
+
+
+ Node.js에 대해 더 알고 싶다면 학습 자료를 확인하세요[Learning materials](/learn).
diff --git a/apps/site/pages/pt/index.mdx b/apps/site/pages/pt/index.mdx
index a1ca7594dc92b..21f1e16961367 100644
--- a/apps/site/pages/pt/index.mdx
+++ b/apps/site/pages/pt/index.mdx
@@ -4,134 +4,131 @@ layout: home
---
-
-
-
-
Executar a JavaScript em Toda Parte
-
-Node.js® é uma ambiente de execução de JavaScript disponível para várias plataformas, de código aberto e gratuita, que permite os programadores criar servidores, aplicações da Web, ferramentas de linha de comando e programas de automação de tarefas.
-
-
+
+ Node.js® é uma ambiente de execução de JavaScript disponível para várias plataformas,
+ de código aberto e gratuita, que permite os programadores criar servidores, aplicações
+ da Web, ferramentas de linha de comando e programas de automação de tarefas.
+
+
+
+
+
+ {({ release }) => (
+ <>
+ Descarregar a Node.js (LTS)
+
+ Descarregar a Node.js {release.versionWithPrefix}
+ 1 com o suporte de longo prazo.
+ A Node.js também pode ser instalada através dos gestores de pacotes.
+
+ >
+ )}
+
+
+
+ {({ release }) => (
- Descarregar a Node.js {release.versionWithPrefix}
- 1 com o suporte de longo prazo.
- A Node.js também pode ser instalada através dos gestores de pacotes.
+ Se estivermos ansiosos quanto as novas funcionalidades,
+ podemos obter a Node.js {release.versionWithPrefix}
+ 1.
- >
- )}
-
-
-
- {({ release }) => (
-
- Se estivermos ansiosos quanto as novas funcionalidades,
- podemos obter a Node.js {release.versionWithPrefix}
- 1.
-
- )}
-
-
+ )}
+
+
+
-
- ```js displayName="Create an HTTP Server"
- // server.mjs
- import { createServer } from 'node:http';
-
-const server = createServer((req, res) => {
-res.writeHead(200, { 'Content-Type': 'text/plain' });
-res.end('Hello World!\n');
-});
-
-// starts a simple http server locally on port 3000
-server.listen(3000, '127.0.0.1', () => {
-console.log('Listening on 127.0.0.1:3000');
-});
-
-// run with `node server.mjs`
-
-````
-
-```js displayName="Write Tests"
-// tests.mjs
-import assert from 'node:assert';
-import test from 'node:test';
-
-test('that 1 is equal 1', () => {
- assert.strictEqual(1, 1);
-});
-
-test('that throws as 1 is not equal 2', () => {
- // throws an exception because 1 != 2
- assert.strictEqual(1, 2);
-});
-
-// run with `node tests.mjs`
-````
-
-```js displayName="Read and Hash a File"
-// crypto.mjs
-import { createHash } from 'node:crypto';
-import { readFile } from 'node:fs/promises';
-
-const hasher = createHash('sha1');
-
-hasher.setEncoding('hex');
-// ensure you have a `package.json` file for this test!
-hasher.write(await readFile('package.json'));
-hasher.end();
-
-const fileHash = hasher.read();
-
-// run with `node crypto.mjs`
-```
-
-```js displayName="Streams Pipeline"
-// streams.mjs
-import { pipeline } from 'node:stream/promises';
-import { createReadStream, createWriteStream } from 'node:fs';
-import { createGzip } from 'node:zlib';
-
-// ensure you have a `package.json` file for this test!
-await pipeline(
- createReadStream('package.json'),
- createGzip(),
- createWriteStream('package.json.gz')
-);
-
-// run with `node streams.mjs`
-```
-
-```js displayName="Work with Threads"
-// threads.mjs
-import {
- Worker,
- isMainThread,
- workerData,
- parentPort,
-} from 'node:worker_threads';
-
-if (isMainThread) {
- const data = 'some data';
- const worker = new Worker(import.meta.filename, { workerData: data });
- worker.on('message', msg => console.log('Reply from Thread:', msg));
-} else {
- const source = workerData;
- parentPort.postMessage(btoa(source.toUpperCase()));
-}
-
-// run with `node threads.mjs`
-```
-
-
-
-Podemos saber mais do que a Node.js é capaz de oferecer com os nossos [materiais de aprendizado](/learn).
-
+
+ ```js displayName="Create an HTTP Server"
+ // server.mjs
+ import { createServer } from 'node:http';
+
+ const server = createServer((req, res) => {
+ res.writeHead(200, { 'Content-Type': 'text/plain' });
+ res.end('Hello World!\n');
+ });
+
+ // starts a simple http server locally on port 3000
+ server.listen(3000, '127.0.0.1', () => {
+ console.log('Listening on 127.0.0.1:3000');
+ });
+
+ // run with `node server.mjs`
+ ```
+
+ ```js displayName="Write Tests"
+ // tests.mjs
+ import assert from 'node:assert';
+ import test from 'node:test';
+
+ test('that 1 is equal 1', () => {
+ assert.strictEqual(1, 1);
+ });
+
+ test('that throws as 1 is not equal 2', () => {
+ // throws an exception because 1 != 2
+ assert.strictEqual(1, 2);
+ });
+
+ // run with `node tests.mjs`
+ ```
+
+ ```js displayName="Read and Hash a File"
+ // crypto.mjs
+ import { createHash } from 'node:crypto';
+ import { readFile } from 'node:fs/promises';
+
+ const hasher = createHash('sha1');
+
+ hasher.setEncoding('hex');
+ // ensure you have a `package.json` file for this test!
+ hasher.write(await readFile('package.json'));
+ hasher.end();
+
+ const fileHash = hasher.read();
+
+ // run with `node crypto.mjs`
+ ```
+
+ ```js displayName="Streams Pipeline"
+ // streams.mjs
+ import { pipeline } from 'node:stream/promises';
+ import { createReadStream, createWriteStream } from 'node:fs';
+ import { createGzip } from 'node:zlib';
+
+ // ensure you have a `package.json` file for this test!
+ await pipeline
+ (
+ createReadStream('package.json'),
+ createGzip(),
+ createWriteStream('package.json.gz')
+ );
+
+ // run with `node streams.mjs`
+ ```
+
+ ```js displayName="Work with Threads"
+ // threads.mjs
+ import { Worker, isMainThread,
+ workerData, parentPort } from 'node:worker_threads';
+
+ if (isMainThread) {
+ const data = 'some data';
+ const worker = new Worker(import.meta.filename, { workerData: data });
+ worker.on('message', msg => console.log('Reply from Thread:', msg));
+ } else {
+ const source = workerData;
+ parentPort.postMessage(btoa(source.toUpperCase()));
+ }
+
+ // run with `node threads.mjs`
+ ```
+
+
+ Podemos saber mais do que a Node.js é capaz de oferecer com os nossos [materiais de aprendizado](/learn).
diff --git a/apps/site/pages/tr/index.mdx b/apps/site/pages/tr/index.mdx
index d8e43069cd368..742f803ab7bbc 100644
--- a/apps/site/pages/tr/index.mdx
+++ b/apps/site/pages/tr/index.mdx
@@ -4,140 +4,137 @@ layout: home
---
-
-
-
-
Her Yerde JavaScript Çalıştırın
-
-Node.js®, ücretsiz, açık kaynaklı, çapraz platform JavaScript çalıştırma ortamıdır. Geliştiricilere sunucular, web uygulamaları, komut satırı araçları ve betikler oluşturma imkanı sağlar.
-
-
+
+ Node.js®, ücretsiz, açık kaynaklı, çapraz platform JavaScript çalıştırma ortamıdır.
+ Geliştiricilere sunucular, web uygulamaları, komut satırı araçları ve betikler oluşturma
+ imkanı sağlar.
+
+
+
+
+
+ {({ release }) => (
+ <>
+ Node.js'i İndir (LTS)
+
+ Node.js'i indir {release.versionWithPrefix}
+ 1 uzun vadeli destek ile indirin.
+ Node.js ayrıca paket yöneticileri aracılığıyla da kurulabilir.
+
+ >
+ )}
+
+
+
+ {({ release }) => (
- Node.js'i indir {release.versionWithPrefix}
- 1 uzun vadeli destek ile indirin.
- Node.js ayrıca paket yöneticileri aracılığıyla da kurulabilir.
+ Yeni özellikleri daha erken mi istiyorsunuz?{" "}
+
+ Node.js{" "}
+
+ {release.versionWithPrefix}
+
+ {" "}
+ 1{" "}
+ alabilirsiniz.
- >
- )}
-
-
-
- {({ release }) => (
-
- Yeni özellikleri daha erken mi istiyorsunuz?{" "}
-
- Node.js{" "}
-
- {release.versionWithPrefix}
-
- {" "}
- 1{" "}
- alabilirsiniz.
-
- )}
-
-
+ )}
+
+
+
-
- ```js displayName="Create an HTTP Server"
- // server.mjs
- import { createServer } from 'node:http';
-
-const server = createServer((req, res) => {
-res.writeHead(200, { 'Content-Type': 'text/plain' });
-res.end('Hello World!\n');
-});
-
-// starts a simple http server locally on port 3000
-server.listen(3000, '127.0.0.1', () => {
-console.log('Listening on 127.0.0.1:3000');
-});
-
-// run with `node server.mjs`
-
-````
-
-```js displayName="Write Tests"
-// tests.mjs
-import assert from 'node:assert';
-import test from 'node:test';
-
-test('that 1 is equal 1', () => {
- assert.strictEqual(1, 1);
-});
-
-test('that throws as 1 is not equal 2', () => {
- // throws an exception because 1 != 2
- assert.strictEqual(1, 2);
-});
-
-// run with `node tests.mjs`
-````
-
-```js displayName="Read and Hash a File"
-// crypto.mjs
-import { createHash } from 'node:crypto';
-import { readFile } from 'node:fs/promises';
-
-const hasher = createHash('sha1');
-
-hasher.setEncoding('hex');
-// ensure you have a `package.json` file for this test!
-hasher.write(await readFile('package.json'));
-hasher.end();
-
-const fileHash = hasher.read();
-
-// run with `node crypto.mjs`
-```
-
-```js displayName="Streams Pipeline"
-// streams.mjs
-import { pipeline } from 'node:stream/promises';
-import { createReadStream, createWriteStream } from 'node:fs';
-import { createGzip } from 'node:zlib';
-
-// ensure you have a `package.json` file for this test!
-await pipeline(
- createReadStream('package.json'),
- createGzip(),
- createWriteStream('package.json.gz')
-);
-
-// run with `node streams.mjs`
-```
-
-```js displayName="Work with Threads"
-// threads.mjs
-import {
- Worker,
- isMainThread,
- workerData,
- parentPort,
-} from 'node:worker_threads';
-
-if (isMainThread) {
- const data = 'some data';
- const worker = new Worker(import.meta.filename, { workerData: data });
- worker.on('message', msg => console.log('Reply from Thread:', msg));
-} else {
- const source = workerData;
- parentPort.postMessage(btoa(source.toUpperCase()));
-}
-
-// run with `node threads.mjs`
-```
-
-
-
-Node.js'in sunabileceklerini daha yakından keşfetmek için [Öğrenme materyallerimize](/learn) göz atın.
-
+
+ ```js displayName="Create an HTTP Server"
+ // server.mjs
+ import { createServer } from 'node:http';
+
+ const server = createServer((req, res) => {
+ res.writeHead(200, { 'Content-Type': 'text/plain' });
+ res.end('Hello World!\n');
+ });
+
+ // starts a simple http server locally on port 3000
+ server.listen(3000, '127.0.0.1', () => {
+ console.log('Listening on 127.0.0.1:3000');
+ });
+
+ // run with `node server.mjs`
+ ```
+
+ ```js displayName="Write Tests"
+ // tests.mjs
+ import assert from 'node:assert';
+ import test from 'node:test';
+
+ test('that 1 is equal 1', () => {
+ assert.strictEqual(1, 1);
+ });
+
+ test('that throws as 1 is not equal 2', () => {
+ // throws an exception because 1 != 2
+ assert.strictEqual(1, 2);
+ });
+
+ // run with `node tests.mjs`
+ ```
+
+ ```js displayName="Read and Hash a File"
+ // crypto.mjs
+ import { createHash } from 'node:crypto';
+ import { readFile } from 'node:fs/promises';
+
+ const hasher = createHash('sha1');
+
+ hasher.setEncoding('hex');
+ // ensure you have a `package.json` file for this test!
+ hasher.write(await readFile('package.json'));
+ hasher.end();
+
+ const fileHash = hasher.read();
+
+ // run with `node crypto.mjs`
+ ```
+
+ ```js displayName="Streams Pipeline"
+ // streams.mjs
+ import { pipeline } from 'node:stream/promises';
+ import { createReadStream, createWriteStream } from 'node:fs';
+ import { createGzip } from 'node:zlib';
+
+ // ensure you have a `package.json` file for this test!
+ await pipeline
+ (
+ createReadStream('package.json'),
+ createGzip(),
+ createWriteStream('package.json.gz')
+ );
+
+ // run with `node streams.mjs`
+ ```
+
+ ```js displayName="Work with Threads"
+ // threads.mjs
+ import { Worker, isMainThread,
+ workerData, parentPort } from 'node:worker_threads';
+
+ if (isMainThread) {
+ const data = 'some data';
+ const worker = new Worker(import.meta.filename, { workerData: data });
+ worker.on('message', msg => console.log('Reply from Thread:', msg));
+ } else {
+ const source = workerData;
+ parentPort.postMessage(btoa(source.toUpperCase()));
+ }
+
+ // run with `node threads.mjs`
+ ```
+
+
+ Node.js'in sunabileceklerini daha yakından keşfetmek için [Öğrenme materyallerimize](/learn) göz atın.
diff --git a/apps/site/pages/uk/index.mdx b/apps/site/pages/uk/index.mdx
index 5566b99b83752..fb76e0634cb05 100644
--- a/apps/site/pages/uk/index.mdx
+++ b/apps/site/pages/uk/index.mdx
@@ -4,134 +4,131 @@ layout: home
---
-
-
-
-
Запускайте JavaScript будь-де
-
-Node.js® — це безплатне, кросплатформне середовище виконання JavaScript із відкритим кодом, яке дозволяє розробникам створювати сервери, вебзастосунки, інструменти командного рядка та скрипти.
-
-
+
+ Node.js® — це безплатне, кросплатформне середовище виконання JavaScript із відкритим кодом,
+ яке дозволяє розробникам створювати сервери, вебзастосунки, інструменти командного рядка та
+ скрипти.
+
+
+
+
+
+ {({ release }) => (
+ <>
+ Завантажити Node.js (LTS)
+
+ Завантажує Node.js {release.versionWithPrefix}
+ 1 із довгостроковою підтримкою.
+ Node.js також можна встановити через менеджери пакетів.
+
+ >
+ )}
+
+
+
+ {({ release }) => (
- Завантажує Node.js {release.versionWithPrefix}
- 1 із довгостроковою підтримкою.
- Node.js також можна встановити через менеджери пакетів.
+ Хочете отримати нові функції швидше?
+ Завантажте Node.js {release.versionWithPrefix}
+ 1.
- >
- )}
-
-
-
- {({ release }) => (
-
- Хочете отримати нові функції швидше?
- Завантажте Node.js {release.versionWithPrefix}
- 1.
-
- )}
-
-
+ )}
+
+
+
-
- ```js displayName="Create an HTTP Server"
- // server.mjs
- import { createServer } from 'node:http';
-
-const server = createServer((req, res) => {
-res.writeHead(200, { 'Content-Type': 'text/plain' });
-res.end('Hello World!\n');
-});
-
-// starts a simple http server locally on port 3000
-server.listen(3000, '127.0.0.1', () => {
-console.log('Listening on 127.0.0.1:3000');
-});
-
-// run with `node server.mjs`
-
-````
-
-```js displayName="Write Tests"
-// tests.mjs
-import assert from 'node:assert';
-import test from 'node:test';
-
-test('that 1 is equal 1', () => {
- assert.strictEqual(1, 1);
-});
-
-test('that throws as 1 is not equal 2', () => {
- // throws an exception because 1 != 2
- assert.strictEqual(1, 2);
-});
-
-// run with `node tests.mjs`
-````
-
-```js displayName="Read and Hash a File"
-// crypto.mjs
-import { createHash } from 'node:crypto';
-import { readFile } from 'node:fs/promises';
-
-const hasher = createHash('sha1');
-
-hasher.setEncoding('hex');
-// ensure you have a `package.json` file for this test!
-hasher.write(await readFile('package.json'));
-hasher.end();
-
-const fileHash = hasher.read();
-
-// run with `node crypto.mjs`
-```
-
-```js displayName="Streams Pipeline"
-// streams.mjs
-import { pipeline } from 'node:stream/promises';
-import { createReadStream, createWriteStream } from 'node:fs';
-import { createGzip } from 'node:zlib';
-
-// ensure you have a `package.json` file for this test!
-await pipeline(
- createReadStream('package.json'),
- createGzip(),
- createWriteStream('package.json.gz')
-);
-
-// run with `node streams.mjs`
-```
-
-```js displayName="Work with Threads"
-// threads.mjs
-import {
- Worker,
- isMainThread,
- workerData,
- parentPort,
-} from 'node:worker_threads';
-
-if (isMainThread) {
- const data = 'some data';
- const worker = new Worker(import.meta.filename, { workerData: data });
- worker.on('message', msg => console.log('Reply from Thread:', msg));
-} else {
- const source = workerData;
- parentPort.postMessage(btoa(source.toUpperCase()));
-}
-
-// run with `node threads.mjs`
-```
-
-
-
-Дізнайтеся більше про можливості Node.js із [нашими навчальними матеріалами](/learn).
-
+
+ ```js displayName="Create an HTTP Server"
+ // server.mjs
+ import { createServer } from 'node:http';
+
+ const server = createServer((req, res) => {
+ res.writeHead(200, { 'Content-Type': 'text/plain' });
+ res.end('Hello World!\n');
+ });
+
+ // starts a simple http server locally on port 3000
+ server.listen(3000, '127.0.0.1', () => {
+ console.log('Listening on 127.0.0.1:3000');
+ });
+
+ // run with `node server.mjs`
+ ```
+
+ ```js displayName="Write Tests"
+ // tests.mjs
+ import assert from 'node:assert';
+ import test from 'node:test';
+
+ test('that 1 is equal 1', () => {
+ assert.strictEqual(1, 1);
+ });
+
+ test('that throws as 1 is not equal 2', () => {
+ // throws an exception because 1 != 2
+ assert.strictEqual(1, 2);
+ });
+
+ // run with `node tests.mjs`
+ ```
+
+ ```js displayName="Read and Hash a File"
+ // crypto.mjs
+ import { createHash } from 'node:crypto';
+ import { readFile } from 'node:fs/promises';
+
+ const hasher = createHash('sha1');
+
+ hasher.setEncoding('hex');
+ // ensure you have a `package.json` file for this test!
+ hasher.write(await readFile('package.json'));
+ hasher.end();
+
+ const fileHash = hasher.read();
+
+ // run with `node crypto.mjs`
+ ```
+
+ ```js displayName="Streams Pipeline"
+ // streams.mjs
+ import { pipeline } from 'node:stream/promises';
+ import { createReadStream, createWriteStream } from 'node:fs';
+ import { createGzip } from 'node:zlib';
+
+ // ensure you have a `package.json` file for this test!
+ await pipeline
+ (
+ createReadStream('package.json'),
+ createGzip(),
+ createWriteStream('package.json.gz')
+ );
+
+ // run with `node streams.mjs`
+ ```
+
+ ```js displayName="Work with Threads"
+ // threads.mjs
+ import { Worker, isMainThread,
+ workerData, parentPort } from 'node:worker_threads';
+
+ if (isMainThread) {
+ const data = 'some data';
+ const worker = new Worker(import.meta.filename, { workerData: data });
+ worker.on('message', msg => console.log('Reply from Thread:', msg));
+ } else {
+ const source = workerData;
+ parentPort.postMessage(btoa(source.toUpperCase()));
+ }
+
+ // run with `node threads.mjs`
+ ```
+
+
+ Дізнайтеся більше про можливості Node.js із [нашими навчальними матеріалами](/learn).
diff --git a/apps/site/pages/zh-cn/index.mdx b/apps/site/pages/zh-cn/index.mdx
index 5c5e83cab6ec5..9809abe73cdb7 100644
--- a/apps/site/pages/zh-cn/index.mdx
+++ b/apps/site/pages/zh-cn/index.mdx
@@ -4,134 +4,130 @@ layout: home
---
-
-
-
{renderAvatars.map(({ ...avatar }) => (
Date: Sat, 30 Nov 2024 00:01:57 +0100
Subject: [PATCH 21/65] hotfix: turbo config for i18n
---
packages/i18n/turbo.json | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/packages/i18n/turbo.json b/packages/i18n/turbo.json
index ddc932d6ae7ca..8607602900992 100644
--- a/packages/i18n/turbo.json
+++ b/packages/i18n/turbo.json
@@ -8,7 +8,21 @@
},
"build": {
"dependsOn": [],
- "outputs": ["dist/**"]
+ "outputs": ["dist/**"],
+ "env": [
+ "NEXT_PUBLIC_VERCEL_ENV",
+ "NEXT_PUBLIC_STATIC_EXPORT",
+ "NEXT_PUBLIC_BASE_URL",
+ "NEXT_PUBLIC_VERCEL_URL",
+ "NEXT_PUBLIC_DIST_URL",
+ "NEXT_PUBLIC_DOCS_URL",
+ "NEXT_PUBLIC_BASE_PATH",
+ "NEXT_PUBLIC_ORAMA_API_KEY",
+ "NEXT_PUBLIC_ORAMA_ENDPOINT",
+ "NEXT_PUBLIC_DATA_URL",
+ "TURBO_CACHE",
+ "TURBO_TELEMETRY_DISABLED"
+ ]
},
"lint:js": {
"inputs": ["lib/**/*.{js,mjs,ts}"]
From 4496a58cfa01701be463aba38247a3803b7a7113 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 3 Dec 2024 17:02:40 +1000
Subject: [PATCH 22/65] meta: bump the lint group with 4 updates (#7298)
Bumps the lint group with 4 updates: [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js), [eslint](https://github.com/eslint/eslint), [stylelint](https://github.com/stylelint/stylelint) and [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint).
Updates `@eslint/js` from 9.15.0 to 9.16.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/commits/v9.16.0/packages/js)
Updates `eslint` from 9.15.0 to 9.16.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v9.15.0...v9.16.0)
Updates `stylelint` from 16.10.0 to 16.11.0
- [Release notes](https://github.com/stylelint/stylelint/releases)
- [Changelog](https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/stylelint/stylelint/compare/16.10.0...16.11.0)
Updates `typescript-eslint` from 8.15.0 to 8.16.0
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.16.0/packages/typescript-eslint)
---
updated-dependencies:
- dependency-name: "@eslint/js"
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: lint
- dependency-name: eslint
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: lint
- dependency-name: stylelint
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: lint
- dependency-name: typescript-eslint
dependency-type: direct:development
update-type: version-update:semver-minor
dependency-group: lint
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
apps/site/package.json | 4 +-
package-lock.json | 87 ++++++++++++++------------------------
package.json | 4 +-
packages/i18n/package.json | 2 +-
4 files changed, 37 insertions(+), 60 deletions(-)
diff --git a/apps/site/package.json b/apps/site/package.json
index 812bc7d887352..7f5c023141631 100644
--- a/apps/site/package.json
+++ b/apps/site/package.json
@@ -107,12 +107,12 @@
"remark-frontmatter": "5.0.0",
"remark-preset-lint-node": "5.1.2",
"storybook": "^8.4.4",
- "stylelint": "16.10.0",
+ "stylelint": "16.11.0",
"stylelint-config-standard": "36.0.1",
"stylelint-order": "6.0.4",
"stylelint-selector-bem-pattern": "4.0.1",
"typescript": "~5.6.3",
- "typescript-eslint": "~8.15.0",
+ "typescript-eslint": "~8.16.0",
"user-agent-data-types": "0.4.2"
}
}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index cc246d60b6c65..9ef78f2faeea9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -16,12 +16,12 @@
"turbo": "2.3.0"
},
"devDependencies": {
- "@eslint/js": "~9.15.0",
+ "@eslint/js": "~9.16.0",
"@types/eslint__js": "8.42.3",
"@types/node": "22.9.3",
"commitizen": "4.3.1",
"cz-conventional-changelog": "3.3.0",
- "eslint": "~9.15.0",
+ "eslint": "~9.16.0",
"eslint-plugin-import-x": "~4.4.3",
"eslint-plugin-no-relative-import-paths": "~1.5.5",
"prettier": "3.3.3",
@@ -119,12 +119,12 @@
"remark-frontmatter": "5.0.0",
"remark-preset-lint-node": "5.1.2",
"storybook": "^8.4.4",
- "stylelint": "16.10.0",
+ "stylelint": "16.11.0",
"stylelint-config-standard": "36.0.1",
"stylelint-order": "6.0.4",
"stylelint-selector-bem-pattern": "4.0.1",
"typescript": "~5.6.3",
- "typescript-eslint": "~8.15.0",
+ "typescript-eslint": "~8.16.0",
"user-agent-data-types": "0.4.2"
},
"engines": {
@@ -865,9 +865,9 @@
}
},
"node_modules/@csstools/media-query-list-parser": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.1.tgz",
- "integrity": "sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.2.tgz",
+ "integrity": "sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A==",
"dev": true,
"funding": [
{
@@ -884,31 +884,8 @@
"node": ">=18"
},
"peerDependencies": {
- "@csstools/css-parser-algorithms": "^3.0.1",
- "@csstools/css-tokenizer": "^3.0.1"
- }
- },
- "node_modules/@csstools/selector-specificity": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-4.0.0.tgz",
- "integrity": "sha512-189nelqtPd8++phaHNwYovKZI0FOzH1vQEE3QhHHkNIGrg5fSs9CbYP3RvfEH5geztnIA9Jwq91wyOIwAW5JIQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
- ],
- "license": "MIT-0",
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "postcss-selector-parser": "^6.1.0"
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3"
}
},
"node_modules/@dual-bundle/import-meta-resolve": {
@@ -1135,9 +1112,9 @@
}
},
"node_modules/@eslint/js": {
- "version": "9.15.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.15.0.tgz",
- "integrity": "sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==",
+ "version": "9.16.0",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.16.0.tgz",
+ "integrity": "sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -5253,7 +5230,7 @@
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.15.0",
+ "@typescript-eslint/types": "8.16.0",
"eslint-visitor-keys": "^4.2.0"
},
"engines": {
@@ -8695,9 +8672,9 @@
}
},
"node_modules/eslint": {
- "version": "9.15.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.15.0.tgz",
- "integrity": "sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==",
+ "version": "9.16.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.16.0.tgz",
+ "integrity": "sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -8706,7 +8683,7 @@
"@eslint/config-array": "^0.19.0",
"@eslint/core": "^0.9.0",
"@eslint/eslintrc": "^3.2.0",
- "@eslint/js": "9.15.0",
+ "@eslint/js": "9.16.0",
"@eslint/plugin-kit": "^0.2.3",
"@humanfs/node": "^0.16.6",
"@humanwhocodes/module-importer": "^1.0.1",
@@ -13938,9 +13915,9 @@
}
},
"node_modules/known-css-properties": {
- "version": "0.34.0",
- "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.34.0.tgz",
- "integrity": "sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==",
+ "version": "0.35.0",
+ "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.35.0.tgz",
+ "integrity": "sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==",
"dev": true,
"license": "MIT"
},
@@ -20847,9 +20824,9 @@
}
},
"node_modules/stylelint": {
- "version": "16.10.0",
- "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.10.0.tgz",
- "integrity": "sha512-z/8X2rZ52dt2c0stVwI9QL2AFJhLhbPkyfpDFcizs200V/g7v+UYY6SNcB9hKOLcDDX/yGLDsY/pX08sLkz9xQ==",
+ "version": "16.11.0",
+ "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.11.0.tgz",
+ "integrity": "sha512-zrl4IrKmjJQ+h9FoMp69UMCq5SxeHk0URhxUBj4d3ISzo/DplOFBJZc7t7Dr6otB+1bfbbKNLOmCDpzKSlW+Nw==",
"dev": true,
"funding": [
{
@@ -20863,16 +20840,16 @@
],
"license": "MIT",
"dependencies": {
- "@csstools/css-parser-algorithms": "^3.0.1",
- "@csstools/css-tokenizer": "^3.0.1",
- "@csstools/media-query-list-parser": "^3.0.1",
- "@csstools/selector-specificity": "^4.0.0",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/media-query-list-parser": "^4.0.2",
+ "@csstools/selector-specificity": "^5.0.0",
"@dual-bundle/import-meta-resolve": "^4.1.0",
"balanced-match": "^2.0.0",
"colord": "^2.9.3",
"cosmiconfig": "^9.0.0",
"css-functions-list": "^3.2.3",
- "css-tree": "^3.0.0",
+ "css-tree": "^3.0.1",
"debug": "^4.3.7",
"fast-glob": "^3.3.2",
"fastest-levenshtein": "^1.0.16",
@@ -20884,16 +20861,16 @@
"ignore": "^6.0.2",
"imurmurhash": "^0.1.4",
"is-plain-object": "^5.0.0",
- "known-css-properties": "^0.34.0",
+ "known-css-properties": "^0.35.0",
"mathml-tag-names": "^2.1.3",
"meow": "^13.2.0",
"micromatch": "^4.0.8",
"normalize-path": "^3.0.0",
- "picocolors": "^1.0.1",
- "postcss": "^8.4.47",
+ "picocolors": "^1.1.1",
+ "postcss": "^8.4.49",
"postcss-resolve-nested-selector": "^0.1.6",
"postcss-safe-parser": "^7.0.1",
- "postcss-selector-parser": "^6.1.2",
+ "postcss-selector-parser": "^7.0.0",
"postcss-value-parser": "^4.2.0",
"resolve-from": "^5.0.0",
"string-width": "^4.2.3",
diff --git a/package.json b/package.json
index 445e03f99a468..cc62ff2ed1a29 100644
--- a/package.json
+++ b/package.json
@@ -40,12 +40,12 @@
"turbo": "2.3.0"
},
"devDependencies": {
- "@eslint/js": "~9.15.0",
+ "@eslint/js": "~9.16.0",
"@types/eslint__js": "8.42.3",
"@types/node": "22.9.3",
"commitizen": "4.3.1",
"cz-conventional-changelog": "3.3.0",
- "eslint": "~9.15.0",
+ "eslint": "~9.16.0",
"eslint-plugin-import-x": "~4.4.3",
"eslint-plugin-no-relative-import-paths": "~1.5.5",
"prettier": "3.3.3",
diff --git a/packages/i18n/package.json b/packages/i18n/package.json
index c6a4c56da72c9..377c70a847bf7 100644
--- a/packages/i18n/package.json
+++ b/packages/i18n/package.json
@@ -18,6 +18,6 @@
"devDependencies": {
"eslint-import-resolver-typescript": "~3.6.3",
"typescript": "~5.6.3",
- "typescript-eslint": "~8.15.0"
+ "typescript-eslint": "~8.16.0"
}
}
From 3770c7cb83c6a04dc31c7315d51bcd61d80bbc6c Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 3 Dec 2024 19:06:45 +1000
Subject: [PATCH 23/65] meta: bump prettier from 3.3.3 to 3.4.1 (#7305)
Bumps [prettier](https://github.com/prettier/prettier) from 3.3.3 to 3.4.1.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.3.3...3.4.1)
---
updated-dependencies:
- dependency-name: prettier
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package-lock.json | 8 ++++----
package.json | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 9ef78f2faeea9..4d4a2c3764c91 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -24,7 +24,7 @@
"eslint": "~9.16.0",
"eslint-plugin-import-x": "~4.4.3",
"eslint-plugin-no-relative-import-paths": "~1.5.5",
- "prettier": "3.3.3",
+ "prettier": "3.4.1",
"prettier-plugin-tailwindcss": "0.6.9"
},
"engines": {
@@ -17632,9 +17632,9 @@
}
},
"node_modules/prettier": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
- "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.1.tgz",
+ "integrity": "sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==",
"dev": true,
"license": "MIT",
"bin": {
diff --git a/package.json b/package.json
index cc62ff2ed1a29..0f6cef3dadf18 100644
--- a/package.json
+++ b/package.json
@@ -48,7 +48,7 @@
"eslint": "~9.16.0",
"eslint-plugin-import-x": "~4.4.3",
"eslint-plugin-no-relative-import-paths": "~1.5.5",
- "prettier": "3.3.3",
+ "prettier": "3.4.1",
"prettier-plugin-tailwindcss": "0.6.9"
}
}
From 2e3d9528a19a112b61a07414a00e3fd585d95ebc Mon Sep 17 00:00:00 2001
From: Ruy Adorno
Date: Tue, 3 Dec 2024 17:25:32 -0500
Subject: [PATCH 24/65] Blog: v22.12.0 release post (#7308)
Refs: https://github.com/nodejs/node/pull/56040
---
apps/site/pages/en/blog/release/v22.12.0.md | 376 ++++++++++++++++++++
1 file changed, 376 insertions(+)
create mode 100644 apps/site/pages/en/blog/release/v22.12.0.md
diff --git a/apps/site/pages/en/blog/release/v22.12.0.md b/apps/site/pages/en/blog/release/v22.12.0.md
new file mode 100644
index 0000000000000..3ea1d70e0278c
--- /dev/null
+++ b/apps/site/pages/en/blog/release/v22.12.0.md
@@ -0,0 +1,376 @@
+---
+date: '2024-12-03T20:47:10.235Z'
+category: release
+title: Node v22.12.0 (LTS)
+layout: blog-post
+author: Ruy Adorno
+---
+
+## 2024-12-03, Version 22.12.0 'Jod' (LTS), @ruyadorno
+
+### Notable Changes
+
+### require(esm) is now enabled by default
+
+Support for loading native ES modules using require() had been available on v20.x and v22.x under the command line flag --experimental-require-module, and available by default on v23.x. In this release, it is now no longer behind a flag on v22.x.
+
+This feature is still experimental, and we are looking for user feedback to make more final tweaks before fully stabilizing it. For this reason, on v23.x, when the Node.js instance encounters a native ES module in require() for the first time, it will emit an experimental warning unless `require()` comes from a path that contains `node_modules`. If there happens to be any regressions caused by this feature, users can report it to the Node.js issue tracker. Meanwhile this feature can also be disabled using `--no-experimental-require-module` as a workaround.
+
+With this feature enabled, Node.js will no longer throw `ERR_REQUIRE_ESM` if `require()` is used to load a ES module. It can, however, throw `ERR_REQUIRE_ASYNC_MODULE` if the ES module being loaded or its dependencies contain top-level `await`. When the ES module is loaded successfully by `require()`, the returned object will either be a ES module namespace object similar to what's returned by `import()`, or what gets exported as `"module.exports"` in the ES module.
+
+Users can check `process.features.require_module` to see whether `require(esm)` is enabled in the current Node.js instance. For packages, the `"module-sync"` exports condition can be used as a way to detect `require(esm)` support in the current Node.js instance and allow both `require()` and `import` to load the same native ES module. See [the documentation](https://nodejs.org/docs/latest/api/modules.html#loading-ecmascript-modules-using-require) for more details about this feature.
+
+Contributed by Joyee Cheung in [#55085](https://github.com/nodejs/node/pull/55085)
+
+#### Added resizable `ArrayBuffer` support in `Buffer`
+
+When a `Buffer` is created using a resizable `ArrayBuffer`, the `Buffer` length will now correctly change as the underlying `ArrayBuffer` size is changed.
+
+```js
+const ab = new ArrayBuffer(10, { maxByteLength: 20 });
+const buffer = Buffer.from(ab);
+console.log(buffer.byteLength);
+10;
+ab.resize(15);
+console.log(buffer.byteLength);
+15;
+ab.resize(5);
+console.log(buffer.byteLength);
+5;
+```
+
+Contributed by James Snell in [#55377](https://github.com/nodejs/node/pull/55377)
+
+#### Update root certificates to NSS 3.104
+
+This is the version of NSS that shipped in Firefox 131.0 on 2024-10-01.
+
+Certificates added:
+
+- FIRMAPROFESIONAL CA ROOT-A WEB
+- TWCA CYBER Root CA
+- SecureSign Root CA12
+- SecureSign Root CA14
+- SecureSign Root CA15
+
+Contributed by Richard Lau in [#55681](https://github.com/nodejs/node/pull/55681)
+
+### Other Notable Changes
+
+- \[[`4920869935`](https://github.com/nodejs/node/commit/4920869935)] - **(SEMVER-MINOR)** **assert**: make assertion_error use Myers diff algorithm (Giovanni Bucci) [#54862](https://github.com/nodejs/node/pull/54862)
+- \[[`ccffd3b819`](https://github.com/nodejs/node/commit/ccffd3b819)] - **doc**: enforce strict policy to semver-major releases (Rafael Gonzaga) [#55732](https://github.com/nodejs/node/pull/55732)
+- \[[`acc6806900`](https://github.com/nodejs/node/commit/acc6806900)] - **doc**: add jazelly to collaborators (Jason Zhang) [#55531](https://github.com/nodejs/node/pull/55531)
+- \[[`88d91e8bc2`](https://github.com/nodejs/node/commit/88d91e8bc2)] - **esm**: mark import attributes and JSON module as stable (Nicolò Ribaudo) [#55333](https://github.com/nodejs/node/pull/55333)
+- \[[`98bfc7dce5`](https://github.com/nodejs/node/commit/98bfc7dce5)] - **(SEMVER-MINOR)** **http**: add diagnostic channel `http.client.request.created` (Marco Ippolito) [#55586](https://github.com/nodejs/node/pull/55586)
+- \[[`337f61fb25`](https://github.com/nodejs/node/commit/337f61fb25)] - **(SEMVER-MINOR)** **lib**: add UV_UDP_REUSEPORT for udp (theanarkh) [#55403](https://github.com/nodejs/node/pull/55403)
+- \[[`1628c48ad6`](https://github.com/nodejs/node/commit/1628c48ad6)] - **(SEMVER-MINOR)** **net**: add UV_TCP_REUSEPORT for tcp (theanarkh) [#55408](https://github.com/nodejs/node/pull/55408)
+- \[[`457e73f4c9`](https://github.com/nodejs/node/commit/457e73f4c9)] - **(SEMVER-MINOR)** **sqlite**: add support for SQLite Session Extension (Bart Louwers) [#54181](https://github.com/nodejs/node/pull/54181)
+
+### Commits
+
+- \[[`f6885e1c68`](https://github.com/nodejs/node/commit/f6885e1c68)] - **assert**: fix the string length check for printing the simple diff (Giovanni Bucci) [#55474](https://github.com/nodejs/node/pull/55474)
+- \[[`907484f04d`](https://github.com/nodejs/node/commit/907484f04d)] - **assert**: fix deepEqual always return true on URL (Xuguang Mei) [#50853](https://github.com/nodejs/node/pull/50853)
+- \[[`301844e249`](https://github.com/nodejs/node/commit/301844e249)] - **assert**: differentiate cases where `cause` is `undefined` or missing (Antoine du Hamel) [#55738](https://github.com/nodejs/node/pull/55738)
+- \[[`89ccd3e3f4`](https://github.com/nodejs/node/commit/89ccd3e3f4)] - **assert**: fix `deepStrictEqual` on errors when `cause` is not undefined (Edigleysson Silva (Edy)) [#55406](https://github.com/nodejs/node/pull/55406)
+- \[[`4920869935`](https://github.com/nodejs/node/commit/4920869935)] - **(SEMVER-MINOR)** **assert**: make assertion_error use Myers diff algorithm (Giovanni Bucci) [#54862](https://github.com/nodejs/node/pull/54862)
+- \[[`c67aec368e`](https://github.com/nodejs/node/commit/c67aec368e)] - **benchmark**: add `test-reporters` (Aviv Keller) [#55757](https://github.com/nodejs/node/pull/55757)
+- \[[`49774cc2c0`](https://github.com/nodejs/node/commit/49774cc2c0)] - **benchmark**: add `test_runner/mock-fn` (Aviv Keller) [#55771](https://github.com/nodejs/node/pull/55771)
+- \[[`4caaeb47b2`](https://github.com/nodejs/node/commit/4caaeb47b2)] - **benchmark**: add nodeTiming.uvmetricsinfo bench (RafaelGSS) [#55614](https://github.com/nodejs/node/pull/55614)
+- \[[`cac58564a1`](https://github.com/nodejs/node/commit/cac58564a1)] - **benchmark**: add --runs support to run.js (Rafael Gonzaga) [#55158](https://github.com/nodejs/node/pull/55158)
+- \[[`5c3ee886fc`](https://github.com/nodejs/node/commit/5c3ee886fc)] - **benchmark**: adjust byte size for buffer-copy (Rafael Gonzaga) [#55295](https://github.com/nodejs/node/pull/55295)
+- \[[`6023e1bdb2`](https://github.com/nodejs/node/commit/6023e1bdb2)] - **(SEMVER-MINOR)** **buffer**: make Buffer work with resizable ArrayBuffer (James M Snell) [#55377](https://github.com/nodejs/node/pull/55377)
+- \[[`a6c00c2204`](https://github.com/nodejs/node/commit/a6c00c2204)] - **build**: add create release proposal action (Rafael Gonzaga) [#55690](https://github.com/nodejs/node/pull/55690)
+- \[[`b4e413933b`](https://github.com/nodejs/node/commit/b4e413933b)] - **build**: implement node_use_amaro flag in GN build (Cheng) [#55798](https://github.com/nodejs/node/pull/55798)
+- \[[`d1db202d4a`](https://github.com/nodejs/node/commit/d1db202d4a)] - **build**: apply cpp linting and formatting to ncrypto (Aviv Keller) [#55362](https://github.com/nodejs/node/pull/55362)
+- \[[`8c670496da`](https://github.com/nodejs/node/commit/8c670496da)] - **build**: use rclone instead of aws CLI (Michaël Zasso) [#55617](https://github.com/nodejs/node/pull/55617)
+- \[[`827e2065bd`](https://github.com/nodejs/node/commit/827e2065bd)] - **build**: stop pre-compiling `lint-md` (Aviv Keller) [#55266](https://github.com/nodejs/node/pull/55266)
+- \[[`c3ca978d9c`](https://github.com/nodejs/node/commit/c3ca978d9c)] - **build**: fix building with system icu 76 (Michael Cho) [#55563](https://github.com/nodejs/node/pull/55563)
+- \[[`23e3287bbe`](https://github.com/nodejs/node/commit/23e3287bbe)] - **build**: fix GN arg used in generate_config_gypi.py (Shelley Vohr) [#55530](https://github.com/nodejs/node/pull/55530)
+- \[[`2b561abb0d`](https://github.com/nodejs/node/commit/2b561abb0d)] - **build**: fix GN build for sqlite and nghttp2 (Shelley Vohr) [#55529](https://github.com/nodejs/node/pull/55529)
+- \[[`7008f29d79`](https://github.com/nodejs/node/commit/7008f29d79)] - **build**: fix GN build for cares/uv deps (Cheng) [#55477](https://github.com/nodejs/node/pull/55477)
+- \[[`6ee94a394f`](https://github.com/nodejs/node/commit/6ee94a394f)] - **build**: fix uninstall script for AIX 7.1 (Cloorc) [#55438](https://github.com/nodejs/node/pull/55438)
+- \[[`edbbd4a374`](https://github.com/nodejs/node/commit/edbbd4a374)] - **build**: conditionally compile bundled sqlite (Richard Lau) [#55409](https://github.com/nodejs/node/pull/55409)
+- \[[`3d8e3a657c`](https://github.com/nodejs/node/commit/3d8e3a657c)] - **build**: tidy up cares.gyp (Richard Lau) [#55445](https://github.com/nodejs/node/pull/55445)
+- \[[`f0c12e8fcb`](https://github.com/nodejs/node/commit/f0c12e8fcb)] - **build**: synchronize list of c-ares source files (Richard Lau) [#55445](https://github.com/nodejs/node/pull/55445)
+- \[[`8daa8a62f8`](https://github.com/nodejs/node/commit/8daa8a62f8)] - **build**: fix path concatenation (Mohammed Keyvanzadeh) [#55387](https://github.com/nodejs/node/pull/55387)
+- \[[`12faf0466e`](https://github.com/nodejs/node/commit/12faf0466e)] - **build**: fix make errors that occur in Makefile (minkyu_kim) [#55287](https://github.com/nodejs/node/pull/55287)
+- \[[`a21be0294d`](https://github.com/nodejs/node/commit/a21be0294d)] - **build,win**: enable pch for clang-cl (Stefan Stojanovic) [#55249](https://github.com/nodejs/node/pull/55249)
+- \[[`7ed058cd00`](https://github.com/nodejs/node/commit/7ed058cd00)] - **cli**: add `--heap-prof` flag available to `NODE_OPTIONS` (Juan José) [#54259](https://github.com/nodejs/node/pull/54259)
+- \[[`c26b1bfe6a`](https://github.com/nodejs/node/commit/c26b1bfe6a)] - **crypto**: allow length=0 for HKDF and PBKDF2 in SubtleCrypto.deriveBits (Filip Skokan) [#55866](https://github.com/nodejs/node/pull/55866)
+- \[[`a1201d0392`](https://github.com/nodejs/node/commit/a1201d0392)] - **crypto**: update root certificates to NSS 3.104 (Richard Lau) [#55681](https://github.com/nodejs/node/pull/55681)
+- \[[`20483aab7a`](https://github.com/nodejs/node/commit/20483aab7a)] - **crypto**: fix `RSA_PKCS1_PADDING` error message (Richard Lau) [#55629](https://github.com/nodejs/node/pull/55629)
+- \[[`d345662d50`](https://github.com/nodejs/node/commit/d345662d50)] - **crypto**: include openssl/rand.h explicitly (Shelley Vohr) [#55425](https://github.com/nodejs/node/pull/55425)
+- \[[`166ab3209d`](https://github.com/nodejs/node/commit/166ab3209d)] - **deps**: update simdutf to 5.6.1 (Node.js GitHub Bot) [#55850](https://github.com/nodejs/node/pull/55850)
+- \[[`934979e12e`](https://github.com/nodejs/node/commit/934979e12e)] - **deps**: update undici to 6.21.0 (Node.js GitHub Bot) [#55851](https://github.com/nodejs/node/pull/55851)
+- \[[`af77f66424`](https://github.com/nodejs/node/commit/af77f66424)] - **deps**: update c-ares to v1.34.3 (Node.js GitHub Bot) [#55803](https://github.com/nodejs/node/pull/55803)
+- \[[`948a88d2f4`](https://github.com/nodejs/node/commit/948a88d2f4)] - **deps**: update icu to 76.1 (Node.js GitHub Bot) [#55551](https://github.com/nodejs/node/pull/55551)
+- \[[`fa4c58a983`](https://github.com/nodejs/node/commit/fa4c58a983)] - **deps**: update acorn to 8.14.0 (Node.js GitHub Bot) [#55699](https://github.com/nodejs/node/pull/55699)
+- \[[`c91155f22e`](https://github.com/nodejs/node/commit/c91155f22e)] - **deps**: update sqlite to 3.47.0 (Node.js GitHub Bot) [#55557](https://github.com/nodejs/node/pull/55557)
+- \[[`d1cb7af95c`](https://github.com/nodejs/node/commit/d1cb7af95c)] - **deps**: update amaro to 0.2.0 (Node.js GitHub Bot) [#55601](https://github.com/nodejs/node/pull/55601)
+- \[[`655e5600cb`](https://github.com/nodejs/node/commit/655e5600cb)] - **deps**: update nghttp2 to 1.64.0 (Node.js GitHub Bot) [#55559](https://github.com/nodejs/node/pull/55559)
+- \[[`992450c469`](https://github.com/nodejs/node/commit/992450c469)] - **deps**: update acorn to 8.13.0 (Node.js GitHub Bot) [#55558](https://github.com/nodejs/node/pull/55558)
+- \[[`abd2bd4f64`](https://github.com/nodejs/node/commit/abd2bd4f64)] - **deps**: update undici to 6.20.1 (Node.js GitHub Bot) [#55503](https://github.com/nodejs/node/pull/55503)
+- \[[`7dc2c2edad`](https://github.com/nodejs/node/commit/7dc2c2edad)] - **deps**: update googletest to df1544b (Node.js GitHub Bot) [#55465](https://github.com/nodejs/node/pull/55465)
+- \[[`fa9329c024`](https://github.com/nodejs/node/commit/fa9329c024)] - **deps**: update c-ares to v1.34.2 (Node.js GitHub Bot) [#55463](https://github.com/nodejs/node/pull/55463)
+- \[[`41a2bcd335`](https://github.com/nodejs/node/commit/41a2bcd335)] - **deps**: update ada to 2.9.1 (Node.js GitHub Bot) [#54679](https://github.com/nodejs/node/pull/54679)
+- \[[`a3b793defd`](https://github.com/nodejs/node/commit/a3b793defd)] - **deps**: update simdutf to 5.6.0 (Node.js GitHub Bot) [#55379](https://github.com/nodejs/node/pull/55379)
+- \[[`551b8f897d`](https://github.com/nodejs/node/commit/551b8f897d)] - **deps**: update c-ares to v1.34.1 (Node.js GitHub Bot) [#55369](https://github.com/nodejs/node/pull/55369)
+- \[[`26861eaf4e`](https://github.com/nodejs/node/commit/26861eaf4e)] - _**Revert**_ "**deps**: disable io_uring support in libuv by default" (Santiago Gimeno) [#55114](https://github.com/nodejs/node/pull/55114)
+- \[[`41c50bc15e`](https://github.com/nodejs/node/commit/41c50bc15e)] - **deps**: update libuv to 1.49.1 (Santiago Gimeno) [#55114](https://github.com/nodejs/node/pull/55114)
+- \[[`26fcc04084`](https://github.com/nodejs/node/commit/26fcc04084)] - **deps**: update amaro to 0.1.9 (Node.js GitHub Bot) [#55348](https://github.com/nodejs/node/pull/55348)
+- \[[`0ee6715921`](https://github.com/nodejs/node/commit/0ee6715921)] - **diagnostics_channel**: fix unsubscribe during publish (simon-id) [#55116](https://github.com/nodejs/node/pull/55116)
+- \[[`bf68733e7f`](https://github.com/nodejs/node/commit/bf68733e7f)] - **dns**: stop using deprecated `ares_query` (Aviv Keller) [#55430](https://github.com/nodejs/node/pull/55430)
+- \[[`ef6707eb9b`](https://github.com/nodejs/node/commit/ef6707eb9b)] - **dns**: honor the order option (Luigi Pinca) [#55392](https://github.com/nodejs/node/pull/55392)
+- \[[`0f3810f3e5`](https://github.com/nodejs/node/commit/0f3810f3e5)] - **doc**: add added tag and fix typo sqlite.md (Bart Louwers) [#56012](https://github.com/nodejs/node/pull/56012)
+- \[[`d1bd0ef1b7`](https://github.com/nodejs/node/commit/d1bd0ef1b7)] - **doc**: remove non-working example (Antoine du Hamel) [#55856](https://github.com/nodejs/node/pull/55856)
+- \[[`824ac650ed`](https://github.com/nodejs/node/commit/824ac650ed)] - **doc**: add `node:sqlite` to mandatory `node:` prefix list (翠 / green) [#55846](https://github.com/nodejs/node/pull/55846)
+- \[[`b3ea42d887`](https://github.com/nodejs/node/commit/b3ea42d887)] - **doc**: add `-S` flag release preparation example (Antoine du Hamel) [#55836](https://github.com/nodejs/node/pull/55836)
+- \[[`0bd5d8b9d9`](https://github.com/nodejs/node/commit/0bd5d8b9d9)] - **doc**: clarify UV_THREADPOOL_SIZE env var usage (Preveen P) [#55832](https://github.com/nodejs/node/pull/55832)
+- \[[`27b0236a99`](https://github.com/nodejs/node/commit/27b0236a99)] - **doc**: add notable-change mention to sec release (Rafael Gonzaga) [#55830](https://github.com/nodejs/node/pull/55830)
+- \[[`476075bada`](https://github.com/nodejs/node/commit/476075bada)] - **doc**: fix history info for `URL.prototype.toJSON` (Antoine du Hamel) [#55818](https://github.com/nodejs/node/pull/55818)
+- \[[`2743b7b1d3`](https://github.com/nodejs/node/commit/2743b7b1d3)] - **doc**: correct max-semi-space-size statement (Joe Bowbeer) [#55812](https://github.com/nodejs/node/pull/55812)
+- \[[`3013870093`](https://github.com/nodejs/node/commit/3013870093)] - **doc**: update unflag info of `import.meta.resolve` (skyclouds2001) [#55810](https://github.com/nodejs/node/pull/55810)
+- \[[`27bcd103e7`](https://github.com/nodejs/node/commit/27bcd103e7)] - **doc**: run license-builder (github-actions\[bot]) [#55813](https://github.com/nodejs/node/pull/55813)
+- \[[`72d4b30ead`](https://github.com/nodejs/node/commit/72d4b30ead)] - **doc**: clarify triager role (Gireesh Punathil) [#55775](https://github.com/nodejs/node/pull/55775)
+- \[[`a30defe9dd`](https://github.com/nodejs/node/commit/a30defe9dd)] - **doc**: clarify removal of experimental API does not require a deprecation (Antoine du Hamel) [#55746](https://github.com/nodejs/node/pull/55746)
+- \[[`ccffd3b819`](https://github.com/nodejs/node/commit/ccffd3b819)] - **doc**: enforce strict policy to semver-major releases (Rafael Gonzaga) [#55732](https://github.com/nodejs/node/pull/55732)
+- \[[`b6d2a4e816`](https://github.com/nodejs/node/commit/b6d2a4e816)] - **doc**: add path aliases typescript doc (Carlos Espa) [#55766](https://github.com/nodejs/node/pull/55766)
+- \[[`a435affa11`](https://github.com/nodejs/node/commit/a435affa11)] - **doc**: add esm example in `path.md` (Aviv Keller) [#55745](https://github.com/nodejs/node/pull/55745)
+- \[[`91443c2711`](https://github.com/nodejs/node/commit/91443c2711)] - **doc**: consistent use of word child process (Gireesh Punathil) [#55654](https://github.com/nodejs/node/pull/55654)
+- \[[`83fb0079d4`](https://github.com/nodejs/node/commit/83fb0079d4)] - **doc**: clarity to available addon options (Preveen P) [#55715](https://github.com/nodejs/node/pull/55715)
+- \[[`6ca851457a`](https://github.com/nodejs/node/commit/6ca851457a)] - **doc**: update `--max-semi-space-size` description (Joe Bowbeer) [#55495](https://github.com/nodejs/node/pull/55495)
+- \[[`e17fffc0ff`](https://github.com/nodejs/node/commit/e17fffc0ff)] - **doc**: broken `PerformanceObserver` code sample (Dom Harrington) [#54227](https://github.com/nodejs/node/pull/54227)
+- \[[`8bd5777f0f`](https://github.com/nodejs/node/commit/8bd5777f0f)] - **doc**: add write flag when open file as the demo code's intention (robberfree) [#54626](https://github.com/nodejs/node/pull/54626)
+- \[[`f1e0e0ba55`](https://github.com/nodejs/node/commit/f1e0e0ba55)] - **doc**: remove mention of ECDH-ES in crypto.diffieHellman (Filip Skokan) [#55611](https://github.com/nodejs/node/pull/55611)
+- \[[`1d60b7ec97`](https://github.com/nodejs/node/commit/1d60b7ec97)] - **doc**: improve c++ embedder API doc (Gireesh Punathil) [#55597](https://github.com/nodejs/node/pull/55597)
+- \[[`bbf51d7000`](https://github.com/nodejs/node/commit/bbf51d7000)] - **doc**: capitalize "MIT License" (Aviv Keller) [#55575](https://github.com/nodejs/node/pull/55575)
+- \[[`0e69f6d123`](https://github.com/nodejs/node/commit/0e69f6d123)] - **doc**: add suggested tsconfig for type stripping (Marco Ippolito) [#55534](https://github.com/nodejs/node/pull/55534)
+- \[[`67beb37f50`](https://github.com/nodejs/node/commit/67beb37f50)] - **doc**: add esm examples to node:string_decoder (Alfredo González) [#55507](https://github.com/nodejs/node/pull/55507)
+- \[[`acc6806900`](https://github.com/nodejs/node/commit/acc6806900)] - **doc**: add jazelly to collaborators (Jason Zhang) [#55531](https://github.com/nodejs/node/pull/55531)
+- \[[`a6b3ed54ae`](https://github.com/nodejs/node/commit/a6b3ed54ae)] - **doc**: changed the command used to verify SHASUMS256 (adriancuadrado) [#55420](https://github.com/nodejs/node/pull/55420)
+- \[[`0ad7ca4f1d`](https://github.com/nodejs/node/commit/0ad7ca4f1d)] - **doc**: move dual package shipping docs to separate repo (Joyee Cheung) [#55444](https://github.com/nodejs/node/pull/55444)
+- \[[`e99a98ddfd`](https://github.com/nodejs/node/commit/e99a98ddfd)] - **doc**: add note about stdio streams in child_process (Ederin (Ed) Igharoro) [#55322](https://github.com/nodejs/node/pull/55322)
+- \[[`20302851a9`](https://github.com/nodejs/node/commit/20302851a9)] - **doc**: add `isBigIntObject` to documentation (leviscar) [#55450](https://github.com/nodejs/node/pull/55450)
+- \[[`50d983e80b`](https://github.com/nodejs/node/commit/50d983e80b)] - **doc**: remove outdated remarks about `highWaterMark` in fs (Ian Kerins) [#55462](https://github.com/nodejs/node/pull/55462)
+- \[[`07c2fb2045`](https://github.com/nodejs/node/commit/07c2fb2045)] - **doc**: move Danielle Adams key to old gpg keys (RafaelGSS) [#55399](https://github.com/nodejs/node/pull/55399)
+- \[[`41b045170d`](https://github.com/nodejs/node/commit/41b045170d)] - **doc**: move Bryan English key to old gpg keys (RafaelGSS) [#55399](https://github.com/nodejs/node/pull/55399)
+- \[[`13724dcc20`](https://github.com/nodejs/node/commit/13724dcc20)] - **doc**: move Beth Griggs keys to old gpg keys (RafaelGSS) [#55399](https://github.com/nodejs/node/pull/55399)
+- \[[`0230fb1ead`](https://github.com/nodejs/node/commit/0230fb1ead)] - **doc**: spell out condition restrictions (Jan Martin) [#55187](https://github.com/nodejs/node/pull/55187)
+- \[[`66e41f044d`](https://github.com/nodejs/node/commit/66e41f044d)] - **doc**: add instructions for WinGet build (Hüseyin Açacak) [#55356](https://github.com/nodejs/node/pull/55356)
+- \[[`23d89da3f1`](https://github.com/nodejs/node/commit/23d89da3f1)] - **doc**: add missing return values in buffer docs (Karl Horky) [#55273](https://github.com/nodejs/node/pull/55273)
+- \[[`6e7b33a0ef`](https://github.com/nodejs/node/commit/6e7b33a0ef)] - **doc**: fix ambasador markdown list (Rafael Gonzaga) [#55361](https://github.com/nodejs/node/pull/55361)
+- \[[`d8c552a060`](https://github.com/nodejs/node/commit/d8c552a060)] - **doc**: edit onboarding guide to clarify when mailmap addition is needed (Antoine du Hamel) [#55334](https://github.com/nodejs/node/pull/55334)
+- \[[`c7f82ec978`](https://github.com/nodejs/node/commit/c7f82ec978)] - **doc**: fix the return type of outgoingMessage.setHeaders() (Jimmy Leung) [#55290](https://github.com/nodejs/node/pull/55290)
+- \[[`f1b9791694`](https://github.com/nodejs/node/commit/f1b9791694)] - **doc**: update `require(ESM)` history and stability status (Antoine du Hamel) [#55199](https://github.com/nodejs/node/pull/55199)
+- \[[`9ffd2dd43b`](https://github.com/nodejs/node/commit/9ffd2dd43b)] - **doc**: consolidate history table of CustomEvent (Edigleysson Silva (Edy)) [#55758](https://github.com/nodejs/node/pull/55758)
+- \[[`64fb9e6516`](https://github.com/nodejs/node/commit/64fb9e6516)] - **doc**: add history entries for JSON modules stabilization (Antoine du Hamel) [#55855](https://github.com/nodejs/node/pull/55855)
+- \[[`ae2ae2fef1`](https://github.com/nodejs/node/commit/ae2ae2fef1)] - **esm**: fix import.meta.resolve crash (Marco Ippolito) [#55777](https://github.com/nodejs/node/pull/55777)
+- \[[`15dd43dd6e`](https://github.com/nodejs/node/commit/15dd43dd6e)] - **esm**: add a fallback when importer in not a file (Antoine du Hamel) [#55471](https://github.com/nodejs/node/pull/55471)
+- \[[`aed758d270`](https://github.com/nodejs/node/commit/aed758d270)] - **esm**: fix inconsistency with `importAssertion` in `resolve` hook (Wei Zhu) [#55365](https://github.com/nodejs/node/pull/55365)
+- \[[`88d91e8bc2`](https://github.com/nodejs/node/commit/88d91e8bc2)] - **esm**: mark import attributes and JSON module as stable (Nicolò Ribaudo) [#55333](https://github.com/nodejs/node/pull/55333)
+- \[[`a2c8de7fba`](https://github.com/nodejs/node/commit/a2c8de7fba)] - **events**: add hasEventListener util for validate (Sunghoon) [#55230](https://github.com/nodejs/node/pull/55230)
+- \[[`4f84cdc8a2`](https://github.com/nodejs/node/commit/4f84cdc8a2)] - **events**: optimize EventTarget.addEventListener (Robert Nagy) [#55312](https://github.com/nodejs/node/pull/55312)
+- \[[`c17601557b`](https://github.com/nodejs/node/commit/c17601557b)] - **fs**: prevent unwanted `dependencyOwners` removal (Carlos Espa) [#55565](https://github.com/nodejs/node/pull/55565)
+- \[[`4dd609c685`](https://github.com/nodejs/node/commit/4dd609c685)] - **fs**: fix bufferSize option for opendir recursive (Ethan Arrowood) [#55744](https://github.com/nodejs/node/pull/55744)
+- \[[`d695bd4c4f`](https://github.com/nodejs/node/commit/d695bd4c4f)] - **fs**: pass correct path to `DirentFromStats` during `glob` (Aviv Keller) [#55071](https://github.com/nodejs/node/pull/55071)
+- \[[`5357338b8e`](https://github.com/nodejs/node/commit/5357338b8e)] - **fs**: use `wstring` on Windows paths (jazelly) [#55171](https://github.com/nodejs/node/pull/55171)
+- \[[`0a7f301a36`](https://github.com/nodejs/node/commit/0a7f301a36)] - **http**: add diagnostic channel `http.server.response.created` (Marco Ippolito) [#55622](https://github.com/nodejs/node/pull/55622)
+- \[[`98bfc7dce5`](https://github.com/nodejs/node/commit/98bfc7dce5)] - **(SEMVER-MINOR)** **http**: add diagnostic channel `http.client.request.created` (Marco Ippolito) [#55586](https://github.com/nodejs/node/pull/55586)
+- \[[`d2430ee363`](https://github.com/nodejs/node/commit/d2430ee363)] - **http2**: fix client async storage persistence (Orgad Shaneh) [#55460](https://github.com/nodejs/node/pull/55460)
+- \[[`753cbede2a`](https://github.com/nodejs/node/commit/753cbede2a)] - **lib**: remove startsWith/endsWith primordials for char checks (Gürgün Dayıoğlu) [#55407](https://github.com/nodejs/node/pull/55407)
+- \[[`6e3e99c81e`](https://github.com/nodejs/node/commit/6e3e99c81e)] - **lib**: prefer logical assignment (Aviv Keller) [#55044](https://github.com/nodejs/node/pull/55044)
+- \[[`03902ebb74`](https://github.com/nodejs/node/commit/03902ebb74)] - **lib**: replace `createDeferredPromise` util with `Promise.withResolvers` (Yagiz Nizipli) [#54836](https://github.com/nodejs/node/pull/54836)
+- \[[`ee17fcd6f3`](https://github.com/nodejs/node/commit/ee17fcd6f3)] - **lib**: prefer symbol to number in webidl `type` function (Antoine du Hamel) [#55737](https://github.com/nodejs/node/pull/55737)
+- \[[`18f0f07e92`](https://github.com/nodejs/node/commit/18f0f07e92)] - **lib**: implement webidl dictionary converter and use it in structuredClone (Jason Zhang) [#55489](https://github.com/nodejs/node/pull/55489)
+- \[[`bcead24e24`](https://github.com/nodejs/node/commit/bcead24e24)] - **lib**: prefer number to string in webidl `type` function (Jason Zhang) [#55489](https://github.com/nodejs/node/pull/55489)
+- \[[`d48c5da039`](https://github.com/nodejs/node/commit/d48c5da039)] - **lib**: convert transfer sequence to array in js (Jason Zhang) [#55317](https://github.com/nodejs/node/pull/55317)
+- \[[`cefce4cbb0`](https://github.com/nodejs/node/commit/cefce4cbb0)] - **lib**: remove unnecessary optional chaining (Gürgün Dayıoğlu) [#55728](https://github.com/nodejs/node/pull/55728)
+- \[[`f2561fdeec`](https://github.com/nodejs/node/commit/f2561fdeec)] - **lib**: use `Promise.withResolvers()` in timers (Yagiz Nizipli) [#55720](https://github.com/nodejs/node/pull/55720)
+- \[[`337f61fb25`](https://github.com/nodejs/node/commit/337f61fb25)] - **(SEMVER-MINOR)** **lib**: add UV_UDP_REUSEPORT for udp (theanarkh) [#55403](https://github.com/nodejs/node/pull/55403)
+- \[[`4f89059f63`](https://github.com/nodejs/node/commit/4f89059f63)] - **lib**: add flag to drop connection when running in cluster mode (theanarkh) [#54927](https://github.com/nodejs/node/pull/54927)
+- \[[`29f7325e73`](https://github.com/nodejs/node/commit/29f7325e73)] - **lib**: test_runner#mock:timers respeced timeout_max behaviour (BadKey) [#55375](https://github.com/nodejs/node/pull/55375)
+- \[[`68bcec64b8`](https://github.com/nodejs/node/commit/68bcec64b8)] - **lib**: remove settled dependant signals when they are GCed (Edigleysson Silva (Edy)) [#55354](https://github.com/nodejs/node/pull/55354)
+- \[[`3f8a5d8a28`](https://github.com/nodejs/node/commit/3f8a5d8a28)] - **meta**: bump actions/setup-python from 5.2.0 to 5.3.0 (dependabot\[bot]) [#55688](https://github.com/nodejs/node/pull/55688)
+- \[[`644ad5d60d`](https://github.com/nodejs/node/commit/644ad5d60d)] - **meta**: bump actions/setup-node from 4.0.4 to 4.1.0 (dependabot\[bot]) [#55687](https://github.com/nodejs/node/pull/55687)
+- \[[`334fa69c31`](https://github.com/nodejs/node/commit/334fa69c31)] - **meta**: bump rtCamp/action-slack-notify from 2.3.0 to 2.3.2 (dependabot\[bot]) [#55686](https://github.com/nodejs/node/pull/55686)
+- \[[`fb3fa8bee2`](https://github.com/nodejs/node/commit/fb3fa8bee2)] - **meta**: bump actions/upload-artifact from 4.4.0 to 4.4.3 (dependabot\[bot]) [#55685](https://github.com/nodejs/node/pull/55685)
+- \[[`1aca3a8289`](https://github.com/nodejs/node/commit/1aca3a8289)] - **meta**: bump actions/cache from 4.0.2 to 4.1.2 (dependabot\[bot]) [#55684](https://github.com/nodejs/node/pull/55684)
+- \[[`a6c73eb9c2`](https://github.com/nodejs/node/commit/a6c73eb9c2)] - **meta**: bump actions/checkout from 4.2.0 to 4.2.2 (dependabot\[bot]) [#55683](https://github.com/nodejs/node/pull/55683)
+- \[[`06445bc4e3`](https://github.com/nodejs/node/commit/06445bc4e3)] - **meta**: bump github/codeql-action from 3.26.10 to 3.27.0 (dependabot\[bot]) [#55682](https://github.com/nodejs/node/pull/55682)
+- \[[`37bafce2d8`](https://github.com/nodejs/node/commit/37bafce2d8)] - **meta**: make review-wanted message minimal (Aviv Keller) [#55607](https://github.com/nodejs/node/pull/55607)
+- \[[`4cca54b161`](https://github.com/nodejs/node/commit/4cca54b161)] - **meta**: show PR/issue title on review-wanted (Aviv Keller) [#55606](https://github.com/nodejs/node/pull/55606)
+- \[[`68decbf935`](https://github.com/nodejs/node/commit/68decbf935)] - **meta**: move one or more collaborators to emeritus (Node.js GitHub Bot) [#55381](https://github.com/nodejs/node/pull/55381)
+- \[[`07fc40d823`](https://github.com/nodejs/node/commit/07fc40d823)] - **meta**: assign CODEOWNERS for /deps/ncrypto/\* (Filip Skokan) [#55426](https://github.com/nodejs/node/pull/55426)
+- \[[`139e8f1579`](https://github.com/nodejs/node/commit/139e8f1579)] - **meta**: change color to blue notify review-wanted (Rafael Gonzaga) [#55423](https://github.com/nodejs/node/pull/55423)
+- \[[`c0614dc92c`](https://github.com/nodejs/node/commit/c0614dc92c)] - **meta**: bump codecov/codecov-action from 4.5.0 to 4.6.0 (dependabot\[bot]) [#55222](https://github.com/nodejs/node/pull/55222)
+- \[[`47b6c6748b`](https://github.com/nodejs/node/commit/47b6c6748b)] - **meta**: bump github/codeql-action from 3.26.6 to 3.26.10 (dependabot\[bot]) [#55221](https://github.com/nodejs/node/pull/55221)
+- \[[`6c836aa97e`](https://github.com/nodejs/node/commit/6c836aa97e)] - **meta**: bump step-security/harden-runner from 2.9.1 to 2.10.1 (dependabot\[bot]) [#55220](https://github.com/nodejs/node/pull/55220)
+- \[[`c81c818a21`](https://github.com/nodejs/node/commit/c81c818a21)] - **module**: throw ERR_NO_TYPESCRIPT when compiled without amaro (Marco Ippolito) [#55332](https://github.com/nodejs/node/pull/55332)
+- \[[`d6d1479fcc`](https://github.com/nodejs/node/commit/d6d1479fcc)] - **module**: simplify --inspect-brk handling (Joyee Cheung) [#55679](https://github.com/nodejs/node/pull/55679)
+- \[[`91fdec3a52`](https://github.com/nodejs/node/commit/91fdec3a52)] - **module**: fix error thrown from require(esm) hitting TLA repeatedly (Joyee Cheung) [#55520](https://github.com/nodejs/node/pull/55520)
+- \[[`cb527a925d`](https://github.com/nodejs/node/commit/cb527a925d)] - **module**: do not warn when require(esm) comes from node_modules (Joyee Cheung) [#55960](https://github.com/nodejs/node/pull/55960)
+- \[[`16119f206f`](https://github.com/nodejs/node/commit/16119f206f)] - **module**: trim off internal stack frames for require(esm) warnings (Joyee Cheung) [#55496](https://github.com/nodejs/node/pull/55496)
+- \[[`28b5b9a57d`](https://github.com/nodejs/node/commit/28b5b9a57d)] - **module**: allow ESM that failed to be required to be re-imported (Joyee Cheung) [#55502](https://github.com/nodejs/node/pull/55502)
+- \[[`6ac3400960`](https://github.com/nodejs/node/commit/6ac3400960)] - **module**: include module information in require(esm) warning (Joyee Cheung) [#55397](https://github.com/nodejs/node/pull/55397)
+- \[[`fcdd6167d8`](https://github.com/nodejs/node/commit/fcdd6167d8)] - **module**: check --experimental-require-module separately from detection (Joyee Cheung) [#55250](https://github.com/nodejs/node/pull/55250)
+- \[[`d8c34ced43`](https://github.com/nodejs/node/commit/d8c34ced43)] - **module**: use kNodeModulesRE to detect node_modules (Joyee Cheung) [#55243](https://github.com/nodejs/node/pull/55243)
+- \[[`545c069eb5`](https://github.com/nodejs/node/commit/545c069eb5)] - **module**: support 'module.exports' interop export in require(esm) (Guy Bedford) [#54563](https://github.com/nodejs/node/pull/54563)
+- \[[`58d6871c45`](https://github.com/nodejs/node/commit/58d6871c45)] - **(SEMVER-MINOR)** **module**: unflag --experimental-require-module (Joyee Cheung) [#55085](https://github.com/nodejs/node/pull/55085)
+- \[[`1628c48ad6`](https://github.com/nodejs/node/commit/1628c48ad6)] - **(SEMVER-MINOR)** **net**: add UV_TCP_REUSEPORT for tcp (theanarkh) [#55408](https://github.com/nodejs/node/pull/55408)
+- \[[`a5590083cd`](https://github.com/nodejs/node/commit/a5590083cd)] - **node-api**: add napi_create_buffer_from_arraybuffer method (Mert Can Altin) [#54505](https://github.com/nodejs/node/pull/54505)
+- \[[`21ec855feb`](https://github.com/nodejs/node/commit/21ec855feb)] - **os**: improve path check with direct index access (Mert Can Altin) [#55434](https://github.com/nodejs/node/pull/55434)
+- \[[`1fdaa15226`](https://github.com/nodejs/node/commit/1fdaa15226)] - **report**: fix network queries in getReport libuv with exclude-network (Adrien Foulon) [#55602](https://github.com/nodejs/node/pull/55602)
+- \[[`457e73f4c9`](https://github.com/nodejs/node/commit/457e73f4c9)] - **(SEMVER-MINOR)** **sqlite**: add support for SQLite Session Extension (Bart Louwers) [#54181](https://github.com/nodejs/node/pull/54181)
+- \[[`428701a6d8`](https://github.com/nodejs/node/commit/428701a6d8)] - **sqlite**: improve error handling using MaybeLocal (Tobias Nießen) [#55571](https://github.com/nodejs/node/pull/55571)
+- \[[`4e5878536a`](https://github.com/nodejs/node/commit/4e5878536a)] - **sqlite**: add readOnly option (Tobias Nießen) [#55567](https://github.com/nodejs/node/pull/55567)
+- \[[`8c35ad12de`](https://github.com/nodejs/node/commit/8c35ad12de)] - **sqlite**: refactor open options (Tobias Nießen) [#55442](https://github.com/nodejs/node/pull/55442)
+- \[[`c3c403040a`](https://github.com/nodejs/node/commit/c3c403040a)] - **sqlite**: cache column names in stmt.all() (Fedor Indutny) [#55373](https://github.com/nodejs/node/pull/55373)
+- \[[`6858f7a4d3`](https://github.com/nodejs/node/commit/6858f7a4d3)] - **src**: use env strings to create sqlite results (Michaël Zasso) [#55785](https://github.com/nodejs/node/pull/55785)
+- \[[`db01eaf318`](https://github.com/nodejs/node/commit/db01eaf318)] - **src**: improve `node:os` userInfo performance (Yagiz Nizipli) [#55719](https://github.com/nodejs/node/pull/55719)
+- \[[`383d28489d`](https://github.com/nodejs/node/commit/383d28489d)] - **src**: provide workaround for container-overflow (Daniel Lemire) [#55591](https://github.com/nodejs/node/pull/55591)
+- \[[`3477b6b4a5`](https://github.com/nodejs/node/commit/3477b6b4a5)] - **src**: move more key related stuff to ncrypto (James M Snell) [#55368](https://github.com/nodejs/node/pull/55368)
+- \[[`38c047e38f`](https://github.com/nodejs/node/commit/38c047e38f)] - **src**: refactor ECDHBitsJob signature (Filip Skokan) [#55610](https://github.com/nodejs/node/pull/55610)
+- \[[`acbb62902a`](https://github.com/nodejs/node/commit/acbb62902a)] - **src**: fix dns crash when failed to create NodeAresTask (theanarkh) [#55521](https://github.com/nodejs/node/pull/55521)
+- \[[`547cab9433`](https://github.com/nodejs/node/commit/547cab9433)] - **src**: use NewFromUtf8Literal in NODE_DEFINE_CONSTANT (Charles Kerr) [#55581](https://github.com/nodejs/node/pull/55581)
+- \[[`231fe7b953`](https://github.com/nodejs/node/commit/231fe7b953)] - **src**: do not run IsWindowsBatchFile on non-windows (Yagiz Nizipli) [#55560](https://github.com/nodejs/node/pull/55560)
+- \[[`bde374ee6a`](https://github.com/nodejs/node/commit/bde374ee6a)] - **src**: remove icu based `ToASCII` and `ToUnicode` (Yagiz Nizipli) [#55156](https://github.com/nodejs/node/pull/55156)
+- \[[`6ad23e74be`](https://github.com/nodejs/node/commit/6ad23e74be)] - **src**: fix winapi_strerror error string (Hüseyin Açacak) [#55207](https://github.com/nodejs/node/pull/55207)
+- \[[`63bc40550b`](https://github.com/nodejs/node/commit/63bc40550b)] - **src**: remove uv\_\_node_patch_is_using_io_uring (Santiago Gimeno) [#55114](https://github.com/nodejs/node/pull/55114)
+- \[[`2af72a7671`](https://github.com/nodejs/node/commit/2af72a7671)] - **src**: implement IsInsideNodeModules() in C++ (Joyee Cheung) [#55286](https://github.com/nodejs/node/pull/55286)
+- \[[`e14fb2defb`](https://github.com/nodejs/node/commit/e14fb2defb)] - **src,lib**: optimize nodeTiming.uvMetricsInfo (RafaelGSS) [#55614](https://github.com/nodejs/node/pull/55614)
+- \[[`e14dba3ee5`](https://github.com/nodejs/node/commit/e14dba3ee5)] - **src,lib**: introduce `util.getSystemErrorMessage(err)` (Juan José) [#54075](https://github.com/nodejs/node/pull/54075)
+- \[[`8f59c41d52`](https://github.com/nodejs/node/commit/8f59c41d52)] - **stream**: propagate AbortSignal reason (Marvin ROGER) [#55473](https://github.com/nodejs/node/pull/55473)
+- \[[`7acb96362c`](https://github.com/nodejs/node/commit/7acb96362c)] - **test**: increase coverage of `pathToFileURL` (Antoine du Hamel) [#55493](https://github.com/nodejs/node/pull/55493)
+- \[[`5861135ddb`](https://github.com/nodejs/node/commit/5861135ddb)] - **test**: improve test coverage for child process message sending (Juan José) [#55710](https://github.com/nodejs/node/pull/55710)
+- \[[`554d4ace2f`](https://github.com/nodejs/node/commit/554d4ace2f)] - **test**: ensure that test priority is not higher than current priority (Livia Medeiros) [#55739](https://github.com/nodejs/node/pull/55739)
+- \[[`b0ce62a9bd`](https://github.com/nodejs/node/commit/b0ce62a9bd)] - **test**: add buffer to fs_permission tests (Rafael Gonzaga) [#55734](https://github.com/nodejs/node/pull/55734)
+- \[[`9d9ad81d54`](https://github.com/nodejs/node/commit/9d9ad81d54)] - **test**: improve test coverage for `ServerResponse` (Juan José) [#55711](https://github.com/nodejs/node/pull/55711)
+- \[[`273f84e01c`](https://github.com/nodejs/node/commit/273f84e01c)] - **test**: update `performance-timeline` wpt (RedYetiDev) [#55197](https://github.com/nodejs/node/pull/55197)
+- \[[`89c9c46185`](https://github.com/nodejs/node/commit/89c9c46185)] - **test**: ignore unrelated events in FW watch tests (Carlos Espa) [#55605](https://github.com/nodejs/node/pull/55605)
+- \[[`fc69080669`](https://github.com/nodejs/node/commit/fc69080669)] - **test**: refactor some esm tests (Antoine du Hamel) [#55472](https://github.com/nodejs/node/pull/55472)
+- \[[`a80c166733`](https://github.com/nodejs/node/commit/a80c166733)] - **test**: split up test-runner-mock-timers test (Julian Gassner) [#55506](https://github.com/nodejs/node/pull/55506)
+- \[[`8c2fc11f7c`](https://github.com/nodejs/node/commit/8c2fc11f7c)] - **test**: remove unneeded listeners (Luigi Pinca) [#55486](https://github.com/nodejs/node/pull/55486)
+- \[[`1c5872dbde`](https://github.com/nodejs/node/commit/1c5872dbde)] - **test**: avoid `apply()` calls with large amount of elements (Livia Medeiros) [#55501](https://github.com/nodejs/node/pull/55501)
+- \[[`2194eb4909`](https://github.com/nodejs/node/commit/2194eb4909)] - **test**: increase test coverage for `http.OutgoingMessage.appendHeader()` (Juan José) [#55467](https://github.com/nodejs/node/pull/55467)
+- \[[`ad7e81379a`](https://github.com/nodejs/node/commit/ad7e81379a)] - **test**: make test-node-output-v8-warning more flexible (Shelley Vohr) [#55401](https://github.com/nodejs/node/pull/55401)
+- \[[`6aeeaa719b`](https://github.com/nodejs/node/commit/6aeeaa719b)] - **test**: fix addons and node-api test assumptions (Antoine du Hamel) [#55441](https://github.com/nodejs/node/pull/55441)
+- \[[`73ab14fd8f`](https://github.com/nodejs/node/commit/73ab14fd8f)] - **test**: update wpt test for webmessaging/broadcastchannel (devstone) [#55205](https://github.com/nodejs/node/pull/55205)
+- \[[`ded1b68d10`](https://github.com/nodejs/node/commit/ded1b68d10)] - **test**: deflake `test-cluster-shared-handle-bind-privileged-port` (Aviv Keller) [#55378](https://github.com/nodejs/node/pull/55378)
+- \[[`0e873c3031`](https://github.com/nodejs/node/commit/0e873c3031)] - **test**: update `console` wpt (Aviv Keller) [#55192](https://github.com/nodejs/node/pull/55192)
+- \[[`832300533b`](https://github.com/nodejs/node/commit/832300533b)] - **test**: remove duplicate tests (Luigi Pinca) [#55393](https://github.com/nodejs/node/pull/55393)
+- \[[`310a734c1b`](https://github.com/nodejs/node/commit/310a734c1b)] - **test**: update test_util.cc for coverage (minkyu_kim) [#55291](https://github.com/nodejs/node/pull/55291)
+- \[[`254badd480`](https://github.com/nodejs/node/commit/254badd480)] - **test**: update `compression` wpt (Aviv Keller) [#55191](https://github.com/nodejs/node/pull/55191)
+- \[[`c52a808ac9`](https://github.com/nodejs/node/commit/c52a808ac9)] - **test,crypto**: update WebCryptoAPI WPT (Filip Skokan) [#55703](https://github.com/nodejs/node/pull/55703)
+- \[[`445d117b67`](https://github.com/nodejs/node/commit/445d117b67)] - **test,crypto**: update WebCryptoAPI WPT (Filip Skokan) [#55512](https://github.com/nodejs/node/pull/55512)
+- \[[`cd0d748ede`](https://github.com/nodejs/node/commit/cd0d748ede)] - **test,crypto**: make crypto tests work with BoringSSL (Shelley Vohr) [#55491](https://github.com/nodejs/node/pull/55491)
+- \[[`8bac7c27c8`](https://github.com/nodejs/node/commit/8bac7c27c8)] - **test,crypto**: update WebCryptoAPI WPT (Filip Skokan) [#55427](https://github.com/nodejs/node/pull/55427)
+- \[[`363e7d5a76`](https://github.com/nodejs/node/commit/363e7d5a76)] - **test_runner**: error on mocking an already mocked date (Aviv Keller) [#55858](https://github.com/nodejs/node/pull/55858)
+- \[[`f41d329e98`](https://github.com/nodejs/node/commit/f41d329e98)] - **test_runner**: add support for scheduler.wait on mock timers (Erick Wendel) [#55244](https://github.com/nodejs/node/pull/55244)
+- \[[`b9200c33ae`](https://github.com/nodejs/node/commit/b9200c33ae)] - **test_runner**: require `--enable-source-maps` for sourcemap coverage (Aviv Keller) [#55359](https://github.com/nodejs/node/pull/55359)
+- \[[`f11d93d8ef`](https://github.com/nodejs/node/commit/f11d93d8ef)] - **tools**: enforce ordering of error codes in `errors.md` (Antoine du Hamel) [#55324](https://github.com/nodejs/node/pull/55324)
+- \[[`85ca31a90a`](https://github.com/nodejs/node/commit/85ca31a90a)] - **tools**: bump @eslint/plugin-kit from 0.2.0 to 0.2.3 in /tools/eslint (dependabot\[bot]) [#55875](https://github.com/nodejs/node/pull/55875)
+- \[[`506aac567b`](https://github.com/nodejs/node/commit/506aac567b)] - **tools**: fix exclude labels for commit-queue (Richard Lau) [#55809](https://github.com/nodejs/node/pull/55809)
+- \[[`14ffac9995`](https://github.com/nodejs/node/commit/14ffac9995)] - **tools**: make commit-queue check blocked label (Marco Ippolito) [#55781](https://github.com/nodejs/node/pull/55781)
+- \[[`eb22ec87e6`](https://github.com/nodejs/node/commit/eb22ec87e6)] - **tools**: remove non-existent file from eslint config (Aviv Keller) [#55772](https://github.com/nodejs/node/pull/55772)
+- \[[`5844565fb2`](https://github.com/nodejs/node/commit/5844565fb2)] - **tools**: fix c-ares updater script for Node.js 18 (Richard Lau) [#55717](https://github.com/nodejs/node/pull/55717)
+- \[[`0a79ebd257`](https://github.com/nodejs/node/commit/0a79ebd257)] - **tools**: update ESLint to 9.14.0 (dependabot\[bot]) [#55689](https://github.com/nodejs/node/pull/55689)
+- \[[`12543d560a`](https://github.com/nodejs/node/commit/12543d560a)] - **tools**: use `util.parseArgs` in `lint-md` (Aviv Keller) [#55694](https://github.com/nodejs/node/pull/55694)
+- \[[`d95aa244c2`](https://github.com/nodejs/node/commit/d95aa244c2)] - **tools**: fix root certificate updater (Richard Lau) [#55681](https://github.com/nodejs/node/pull/55681)
+- \[[`3626891f8e`](https://github.com/nodejs/node/commit/3626891f8e)] - **tools**: compact jq output in daily-wpt-fyi.yml action (Filip Skokan) [#55695](https://github.com/nodejs/node/pull/55695)
+- \[[`02c902e68a`](https://github.com/nodejs/node/commit/02c902e68a)] - **tools**: run daily WPT.fyi report on all supported releases (Filip Skokan) [#55619](https://github.com/nodejs/node/pull/55619)
+- \[[`456b02351b`](https://github.com/nodejs/node/commit/456b02351b)] - **tools**: lint README lists more strictly (Antoine du Hamel) [#55625](https://github.com/nodejs/node/pull/55625)
+- \[[`83a5983c7d`](https://github.com/nodejs/node/commit/83a5983c7d)] - **tools**: update lint-md-dependencies (Node.js GitHub Bot) [#55470](https://github.com/nodejs/node/pull/55470)
+- \[[`72b4a8df6a`](https://github.com/nodejs/node/commit/72b4a8df6a)] - **tools**: update gyp-next to 0.18.3 (Node.js GitHub Bot) [#55464](https://github.com/nodejs/node/pull/55464)
+- \[[`6b6e6a5590`](https://github.com/nodejs/node/commit/6b6e6a5590)] - **tools**: add script to synch c-ares source lists (Richard Lau) [#55445](https://github.com/nodejs/node/pull/55445)
+- \[[`a6c444291b`](https://github.com/nodejs/node/commit/a6c444291b)] - **tools**: fix typos (Nathan Baulch) [#55061](https://github.com/nodejs/node/pull/55061)
+- \[[`d5e915ba5d`](https://github.com/nodejs/node/commit/d5e915ba5d)] - **tools**: add `polyfilled` option to `prefer-primordials` rule (Antoine du Hamel) [#55318](https://github.com/nodejs/node/pull/55318)
+- \[[`c8e7f767b7`](https://github.com/nodejs/node/commit/c8e7f767b7)] - **typings**: add missing type of `ArrayBufferPrototypeGetByteLength` (Wuli Zuo) [#55439](https://github.com/nodejs/node/pull/55439)
+- \[[`6317f77942`](https://github.com/nodejs/node/commit/6317f77942)] - **url**: refactor `pathToFileURL` to native (Antoine du Hamel) [#55476](https://github.com/nodejs/node/pull/55476)
+- \[[`5418d40256`](https://github.com/nodejs/node/commit/5418d40256)] - **url**: handle "unsafe" characters properly in `pathToFileURL` (Antoine du Hamel) [#54545](https://github.com/nodejs/node/pull/54545)
+- \[[`fce8c32c19`](https://github.com/nodejs/node/commit/fce8c32c19)] - **util**: do not mark experimental feature as deprecated (Antoine du Hamel) [#55740](https://github.com/nodejs/node/pull/55740)
+- \[[`940d22ffe1`](https://github.com/nodejs/node/commit/940d22ffe1)] - **(SEMVER-MINOR)** **util**: fix util.getCallSites plurality (Chengzhong Wu) [#55626](https://github.com/nodejs/node/pull/55626)
+- \[[`42ac0c2af3`](https://github.com/nodejs/node/commit/42ac0c2af3)] - **util**: do not catch on circular `@@toStringTag` errors (Aviv Keller) [#55544](https://github.com/nodejs/node/pull/55544)
+
+Windows 32-bit Installer: https://nodejs.org/dist/v22.12.0/node-v22.12.0-x86.msi \
+Windows 64-bit Installer: https://nodejs.org/dist/v22.12.0/node-v22.12.0-x64.msi \
+Windows ARM 64-bit Installer: https://nodejs.org/dist/v22.12.0/node-v22.12.0-arm64.msi \
+Windows 32-bit Binary: https://nodejs.org/dist/v22.12.0/win-x86/node.exe \
+Windows 64-bit Binary: https://nodejs.org/dist/v22.12.0/win-x64/node.exe \
+Windows ARM 64-bit Binary: https://nodejs.org/dist/v22.12.0/win-arm64/node.exe \
+macOS 64-bit Installer: https://nodejs.org/dist/v22.12.0/node-v22.12.0.pkg \
+macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v22.12.0/node-v22.12.0-darwin-arm64.tar.gz \
+macOS Intel 64-bit Binary: https://nodejs.org/dist/v22.12.0/node-v22.12.0-darwin-x64.tar.gz \
+Linux 64-bit Binary: https://nodejs.org/dist/v22.12.0/node-v22.12.0-linux-x64.tar.xz \
+Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v22.12.0/node-v22.12.0-linux-ppc64le.tar.xz \
+Linux s390x 64-bit Binary: https://nodejs.org/dist/v22.12.0/node-v22.12.0-linux-s390x.tar.xz \
+AIX 64-bit Binary: https://nodejs.org/dist/v22.12.0/node-v22.12.0-aix-ppc64.tar.gz \
+ARMv7 32-bit Binary: https://nodejs.org/dist/v22.12.0/node-v22.12.0-linux-armv7l.tar.xz \
+ARMv8 64-bit Binary: https://nodejs.org/dist/v22.12.0/node-v22.12.0-linux-arm64.tar.xz \
+Source Code: https://nodejs.org/dist/v22.12.0/node-v22.12.0.tar.gz \
+Other release files: https://nodejs.org/dist/v22.12.0/ \
+Documentation: https://nodejs.org/docs/v22.12.0/api/
+
+### SHASUMS
+
+```
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA256
+
+b4cb7707b22218154cdcf8cbc9bbb5c941dab09961a544cc7aba6ab50da99926 node-v22.12.0-aix-ppc64.tar.gz
+587e4f0fc2c27106e4e758a29db5726b337e660483dd554ea1610a4246fbf71b node-v22.12.0-arm64.msi
+293dcc6c2408da21562d135b0412525e381bb6fe150d688edb58fe850d0f3e13 node-v22.12.0-darwin-arm64.tar.gz
+0047be0cfda922eb73876f9ef41de361c36b7654c884d13d9b783b0efd1db9aa node-v22.12.0-darwin-arm64.tar.xz
+52bc25dd026db7247c3c00439afdb83e95087248267f02d6c1a7250d1f896173 node-v22.12.0-darwin-x64.tar.gz
+d68ef0c4c19b3b3b88c0e7408668d0a539607c136a14668e079feed0c6ec8bec node-v22.12.0-darwin-x64.tar.xz
+c0760383af3c23637f46959a53113490fefb84cb388ac71a08d28761527e7b1b node-v22.12.0-headers.tar.gz
+3cde28bb5820cf0f7593c7817c7a9ab1f15016dd85a6e5c240bbdf2a9c59130d node-v22.12.0-headers.tar.xz
+9e7905fdee722f9650a03ae644b51c4c6effd3b98ac93c588700072ab35c9ddb node-v22.12.0-linux-arm64.tar.gz
+8cfd5a8b9afae5a2e0bd86b0148ca31d2589c0ea669c2d0b11c132e35d90ed68 node-v22.12.0-linux-arm64.tar.xz
+f6f3dc6493befa7844e2f65024f857dc8fbbc0d86089b09f6e73d5eb7e2ce9ad node-v22.12.0-linux-armv7l.tar.gz
+afedb2695faacb22805adde9534f2a360f2b39cab622ebdfe5e7383a2b58ebb9 node-v22.12.0-linux-armv7l.tar.xz
+a01148778eb1e9c56413e6a69cfe8d4563524c914dc3f9c667948a0d7a1a151a node-v22.12.0-linux-ppc64le.tar.gz
+199a606ba1ee86cce6d6b369c71f9d00873d2836a6662592afc3b6a5923e2004 node-v22.12.0-linux-ppc64le.tar.xz
+63dd2e20cb50e2145c06f8f55b5682753691965b20fa08797a969a15b751ac8e node-v22.12.0-linux-s390x.tar.gz
+9b517f8006eb4b451d40c461cbe64f93c6455566dbe2613387ab02412bc06d35 node-v22.12.0-linux-s390x.tar.xz
+e05a4d65232ae2b27b3d77da2e368522fb46b923335b8e0d5f77624c32484044 node-v22.12.0-linux-x64.tar.gz
+22982235e1b71fa8850f82edd09cdae7e3f32df1764a9ec298c72d25ef2c164f node-v22.12.0-linux-x64.tar.xz
+94068d6877faa376f0b00aa775b490d59ea9accc8dbc5616efaff400f670fee1 node-v22.12.0.pkg
+3157e7c002b6e964bdbefb331ec38db1e2dceb064ab11c038275155461b22ce3 node-v22.12.0.tar.gz
+fe1bc4be004dc12721ea2cb671b08a21de01c6976960ef8a1248798589679e16 node-v22.12.0.tar.xz
+9c8e8fc0e409dc0cf32f159f9ccf11e95f1be5bb26e1a9b34f40bb9a6da3f0e2 node-v22.12.0-win-arm64.7z
+17401720af48976e3f67c41e8968a135fb49ca1f88103a92e0e8c70605763854 node-v22.12.0-win-arm64.zip
+922285593360adbe1fcd16d4e0049a13552dcad085fa53768c21c8d17089a134 node-v22.12.0-win-x64.7z
+2b8f2256382f97ad51e29ff71f702961af466c4616393f767455501e6aece9b8 node-v22.12.0-win-x64.zip
+6fa5480413f3bacc170f94e7aa332e5e8d8c3f9a03f05f802c6cbf6b1a265eef node-v22.12.0-win-x86.7z
+b52129972529f22f1c8a726655842ca1fc13e0b4c37cd4d397270ba772032d43 node-v22.12.0-win-x86.zip
+5fa43604523be95f8e73c4c98337a5c2bf02450a6525ad25ec2926e464e6bcef node-v22.12.0-x64.msi
+97fd52500c6947d5886c616ce37c93d40f5b0b811a1f87f89783c25e0de345e3 node-v22.12.0-x86.msi
+cfd2e0d9a708cf37acfecfd11ff237bb141893dc057080b4edb23af6a45d3f55 win-arm64/node.exe
+423502a56ef7f7dd087df41b518f53104ce321ef2ab3031fe4ca22b965382d86 win-arm64/node.lib
+739c03416daf8d2f2efc0bf48a8c2e53e0c14438b8a5889cc2995c5012ae7824 win-arm64/node_pdb.7z
+70f9745e3380cf452d3a8fd156d5ed7ead92a30fdead78ea703afe5331f77e35 win-arm64/node_pdb.zip
+b3b117a08ee61efee09e6fd523ab33c0c018da1b570bde08e4fd914dc1170ed6 win-x64/node.exe
+7980a34112c38a9b269226bcd3a9148bf101411d794750f18dc15c5026b92b30 win-x64/node.lib
+e9fc26cea58f8e1520a5a930c7fc40ac99f22c8470f5617d3e3f09dcd1feb7ef win-x64/node_pdb.7z
+6a9417c99259f5d15a3c11dbe7a011a1484532b33bb84e5e8f8e3c733af74064 win-x64/node_pdb.zip
+ab2390e667e9abfa16b97a27adf84cd9f08a4788816db54f56bc25893f76e9d1 win-x86/node.exe
+289e832c5ff6ebb6be1644bf06d7078638447947cc6e314122e7f17b30ba268a win-x86/node.lib
+525560e7fe53036a1caaf63ec3d4e508ea59079111c0f18b4de2bbf1069537ff win-x86/node_pdb.7z
+82150928ab3f6bc3f50b4cc540b987b3c41ea7f3f93f790e4acf58553572faea win-x86/node_pdb.zip
+-----BEGIN PGP SIGNATURE-----
+
+iQIzBAEBCAAdFiEEEI9StI21e7DMQ5spl7AUGb2S+AoFAmdPa84ACgkQl7AUGb2S
++AoKvg/+MUOxHk+ywPixaRvj7kR0Ofd2+sspI3n3xhGMbzJvH7ncSJHWUi0Y/0c9
+NanEu5RXwJhIRMNJTCDEQWSAzI4VKEx8nQvV5elK5caF3V1/jFWEVs6xe4zvTmvr
+u/q8xOv0eT5w6t0b/w9W/3qo3eyrV4sxapfzdzO2IBJTbHokz1fRGWCPCTFg9tJz
+/+bG5DTIf0ZUDED5fJNAefVuDHofW0h73loc9MpF2HfEF5EdJeRWMELSPn9gIJkI
+M7h65k2L+eK+nm1EgQfEjPdM0ocowXHdDZFLv/yFBRWjRHUxeaSqMlVoF4Gb33Se
+nBSBnytC5Vay0CaFw3o6MduDS/iiB2ObWECm4GU4Gbqhd5TaD3BWJKyAWL/H/6mG
+/ICpVBluF8EUnF/Q69q+2oz+s/DI3a4MVczN000OWhikDgvIHbGh4HkhDgDFVAGQ
+Di/Dx57nEIum8+GytHwRAhTXHuNR8CDokvFx9nGmtviwChrF55htMTpe9fTRBdXb
+Ytj01sXGqV7kfDK9oLYvTtB3382dlvL8d95hJ3tqQjZY1llHLzmTRuAOgmTmH6kw
+uud1EJD/anLbM7TDDPsuYdIOUT8+Eqb2yDc0+qbe5RIZ7eucXRLfk7DTdA8jb/5R
+q316GAJ8Yc66saFuA2EU0UBseurN1CpB1FdtmJx/vtIfQinRtq8=
+=wM8j
+-----END PGP SIGNATURE-----
+```
From 7daf03d8547e09d48685499ff42f09abde89035d Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 3 Dec 2024 16:50:56 -0600
Subject: [PATCH 25/65] meta: bump next-intl from 3.25.1 to 3.25.3 in the
next-js group (#7300)
Bumps the next-js group with 1 update: [next-intl](https://github.com/amannn/next-intl).
Updates `next-intl` from 3.25.1 to 3.25.3
- [Release notes](https://github.com/amannn/next-intl/releases)
- [Changelog](https://github.com/amannn/next-intl/blob/main/CHANGELOG.md)
- [Commits](https://github.com/amannn/next-intl/compare/v3.25.1...v3.25.3)
---
updated-dependencies:
- dependency-name: next-intl
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: next-js
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
apps/site/package.json | 2 +-
package-lock.json | 16 ++++++++--------
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/apps/site/package.json b/apps/site/package.json
index 7f5c023141631..d4da627f36f94 100644
--- a/apps/site/package.json
+++ b/apps/site/package.json
@@ -55,7 +55,7 @@
"glob": "~11.0.0",
"gray-matter": "~4.0.3",
"next": "15.0.3",
- "next-intl": "~3.25.1",
+ "next-intl": "~3.25.3",
"next-themes": "~0.4.3",
"postcss": "~8.4.49",
"postcss-calc": "~10.0.2",
diff --git a/package-lock.json b/package-lock.json
index 4d4a2c3764c91..6802975387299 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -67,7 +67,7 @@
"glob": "~11.0.0",
"gray-matter": "~4.0.3",
"next": "15.0.3",
- "next-intl": "~3.25.1",
+ "next-intl": "~3.25.3",
"next-themes": "~0.4.3",
"postcss": "~8.4.49",
"postcss-calc": "~10.0.2",
@@ -16152,9 +16152,9 @@
}
},
"node_modules/next-intl": {
- "version": "3.25.1",
- "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-3.25.1.tgz",
- "integrity": "sha512-Z2dJWn5f/b1sb8EmuJcuDhbQTIp4RG1KBFAILgRt/y27W0ifU7Ll/os3liphUY4InyRH89uShTAk7ItAlpr0uA==",
+ "version": "3.25.3",
+ "resolved": "https://registry.npmjs.org/next-intl/-/next-intl-3.25.3.tgz",
+ "integrity": "sha512-3VQ+OZdU9Z2enx5uWLYfmd/eb/gZN6QIfj59ROE/R+MTSD7ZAOPsGFnKqj5wwqm4EISGviYenkSuxypyYnhomA==",
"funding": [
{
"type": "individual",
@@ -16165,7 +16165,7 @@
"dependencies": {
"@formatjs/intl-localematcher": "^0.5.4",
"negotiator": "^1.0.0",
- "use-intl": "^3.25.1"
+ "use-intl": "^3.25.3"
},
"peerDependencies": {
"next": "^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0",
@@ -22647,9 +22647,9 @@
}
},
"node_modules/use-intl": {
- "version": "3.25.1",
- "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.25.1.tgz",
- "integrity": "sha512-Xeyl0+BjlBf6fJr2h5W/CESZ2IQAH7jzXYK4c/ao+qR26jNPW3FXBLjg7eLRxdeI6QaLcYGLtH3WYhC9I0+6Yg==",
+ "version": "3.25.3",
+ "resolved": "https://registry.npmjs.org/use-intl/-/use-intl-3.25.3.tgz",
+ "integrity": "sha512-zF+GHRx7auT1qpmiPMN+RnzSad6W5ZjhOpgC5Li/TByqCkMs4SP3xcd8C0jWxT8YI8Ucl518bnkS+gvKIvrXjw==",
"license": "MIT",
"dependencies": {
"@formatjs/fast-memoize": "^2.2.0",
From 6379c41541d5a75c61ff889c06784b492e2aaf5b Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 3 Dec 2024 16:52:32 -0600
Subject: [PATCH 26/65] meta: bump actions/dependency-review-action from 4.4.0
to 4.5.0 (#7297)
Bumps [actions/dependency-review-action](https://github.com/actions/dependency-review-action) from 4.4.0 to 4.5.0.
- [Release notes](https://github.com/actions/dependency-review-action/releases)
- [Commits](https://github.com/actions/dependency-review-action/compare/4081bf99e2866ebe428fc0477b69eb4fcda7220a...3b139cfc5fae8b618d3eae3675e383bb1769c019)
---
updated-dependencies:
- dependency-name: actions/dependency-review-action
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/dependency-review.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/dependency-review.yml b/.github/workflows/dependency-review.yml
index 73ff628083812..715279ce591b8 100644
--- a/.github/workflows/dependency-review.yml
+++ b/.github/workflows/dependency-review.yml
@@ -34,4 +34,4 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Review Dependencies
- uses: actions/dependency-review-action@4081bf99e2866ebe428fc0477b69eb4fcda7220a # v4.4.0
+ uses: actions/dependency-review-action@3b139cfc5fae8b618d3eae3675e383bb1769c019 # v4.5.0
From 1eaf0740a2d8e0ca5fdfe1483124345feeeb90fe Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 4 Dec 2024 06:44:34 -0600
Subject: [PATCH 27/65] meta: bump the storybook group with 6 updates (#7299)
* meta: bump the storybook group with 6 updates
Bumps the storybook group with 6 updates:
| Package | From | To |
| --- | --- | --- |
| [@storybook/addon-controls](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/controls) | `8.4.5` | `8.4.6` |
| [@storybook/addon-interactions](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/interactions) | `8.4.5` | `8.4.6` |
| [@storybook/addon-themes](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/themes) | `8.4.5` | `8.4.6` |
| [@storybook/addon-viewport](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/viewport) | `8.4.5` | `8.4.6` |
| [@storybook/react-webpack5](https://github.com/storybookjs/storybook/tree/HEAD/code/frameworks/react-webpack5) | `8.4.5` | `8.4.6` |
| [storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/cli) | `8.4.5` | `8.4.6` |
Updates `@storybook/addon-controls` from 8.4.5 to 8.4.6
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v8.4.6/code/addons/controls)
Updates `@storybook/addon-interactions` from 8.4.5 to 8.4.6
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v8.4.6/code/addons/interactions)
Updates `@storybook/addon-themes` from 8.4.5 to 8.4.6
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v8.4.6/code/addons/themes)
Updates `@storybook/addon-viewport` from 8.4.5 to 8.4.6
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v8.4.6/code/addons/viewport)
Updates `@storybook/react-webpack5` from 8.4.5 to 8.4.6
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v8.4.6/code/frameworks/react-webpack5)
Updates `storybook` from 8.4.5 to 8.4.6
- [Release notes](https://github.com/storybookjs/storybook/releases)
- [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md)
- [Commits](https://github.com/storybookjs/storybook/commits/v8.4.6/code/lib/cli)
---
updated-dependencies:
- dependency-name: "@storybook/addon-controls"
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: storybook
- dependency-name: "@storybook/addon-interactions"
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: storybook
- dependency-name: "@storybook/addon-themes"
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: storybook
- dependency-name: "@storybook/addon-viewport"
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: storybook
- dependency-name: "@storybook/react-webpack5"
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: storybook
- dependency-name: storybook
dependency-type: direct:development
update-type: version-update:semver-patch
dependency-group: storybook
...
Signed-off-by: dependabot[bot]
* fix: removes quiet flag from storybook command
this has tripped up contributors that don't know that its running on 6006 upon startup
---------
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Brian Muenzenmeyer
---
apps/site/package.json | 12 +-
package-lock.json | 258 ++++++++++++++++++++++++++---------------
2 files changed, 168 insertions(+), 102 deletions(-)
diff --git a/apps/site/package.json b/apps/site/package.json
index d4da627f36f94..631ec1d2eb6c2 100644
--- a/apps/site/package.json
+++ b/apps/site/package.json
@@ -15,7 +15,7 @@
"lint": "turbo run lint:md lint:js lint:css",
"lint:fix": "turbo run lint:md lint:js lint:css --no-cache -- --fix",
"sync-orama": "node ./scripts/orama-search/sync-orama-cloud.mjs",
- "storybook": "cross-env NODE_NO_WARNINGS=1 storybook dev -p 6006 --quiet --no-open",
+ "storybook": "cross-env NODE_NO_WARNINGS=1 storybook dev -p 6006 --no-open",
"storybook:build": "cross-env NODE_NO_WARNINGS=1 storybook build --quiet --webpack-stats-json",
"test:unit": "cross-env NODE_NO_WARNINGS=1 jest",
"test:unit:watch": "npm run test:unit -- --watch",
@@ -80,13 +80,13 @@
"devDependencies": {
"@eslint/compat": "~1.2.3",
"@next/eslint-plugin-next": "15.0.3",
- "@storybook/addon-controls": "^8.4.5",
- "@storybook/addon-interactions": "^8.4.5",
+ "@storybook/addon-controls": "^8.4.6",
+ "@storybook/addon-interactions": "^8.4.6",
"@storybook/addon-styling-webpack": "^1.0.1",
- "@storybook/addon-themes": "^8.4.5",
- "@storybook/addon-viewport": "^8.4.5",
+ "@storybook/addon-themes": "^8.4.6",
+ "@storybook/addon-viewport": "^8.4.6",
"@storybook/addon-webpack5-compiler-swc": "^1.0.5",
- "@storybook/react-webpack5": "^8.4.5",
+ "@storybook/react-webpack5": "^8.4.6",
"@testing-library/jest-dom": "~6.6.3",
"@testing-library/react": "~16.0.1",
"@testing-library/user-event": "~14.5.2",
diff --git a/package-lock.json b/package-lock.json
index 6802975387299..ea28b80357df9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -92,13 +92,13 @@
"devDependencies": {
"@eslint/compat": "~1.2.3",
"@next/eslint-plugin-next": "15.0.3",
- "@storybook/addon-controls": "^8.4.5",
- "@storybook/addon-interactions": "^8.4.5",
+ "@storybook/addon-controls": "^8.4.6",
+ "@storybook/addon-interactions": "^8.4.6",
"@storybook/addon-styling-webpack": "^1.0.1",
- "@storybook/addon-themes": "^8.4.5",
- "@storybook/addon-viewport": "^8.4.5",
+ "@storybook/addon-themes": "^8.4.6",
+ "@storybook/addon-viewport": "^8.4.6",
"@storybook/addon-webpack5-compiler-swc": "^1.0.5",
- "@storybook/react-webpack5": "^8.4.5",
+ "@storybook/react-webpack5": "^8.4.6",
"@testing-library/jest-dom": "~6.6.3",
"@testing-library/react": "~16.0.1",
"@testing-library/user-event": "~14.5.2",
@@ -3814,9 +3814,9 @@
}
},
"node_modules/@storybook/addon-controls": {
- "version": "8.4.5",
- "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.4.5.tgz",
- "integrity": "sha512-RVTtDDuESLYc1+SJQv2kI7wzBddzAS9uoEe8P75quN6S4pC0GxAB6xirWZ2+WOcba4eHosY+PxMwuBXQfH78Ew==",
+ "version": "8.4.6",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.4.6.tgz",
+ "integrity": "sha512-70pEGWh0C2g8s0DYsISElOzsMbQS6p/K9iU5EqfotDF+hvEqstjsV/bTbR5f3OK4vR/7Gxamk7j8RVd14Nql6A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3829,19 +3829,19 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^8.4.5"
+ "storybook": "^8.4.6"
}
},
"node_modules/@storybook/addon-interactions": {
- "version": "8.4.5",
- "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.4.5.tgz",
- "integrity": "sha512-s6R8XVD8LTp+LQTDbhtDjDLE6S44I7FtMLxPdMNwN9VEJjBk01NONLDuGDpNq5o/0bnybA3rMHk9+3afsgzidQ==",
+ "version": "8.4.6",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.4.6.tgz",
+ "integrity": "sha512-sR2oUSYIGUoAdrHT+fM1zgykhad98bsJ11c79r7HfBMXEPWc1yRcjIMmz8Xz06FMROMfebqduYDf60V++/I0Jw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@storybook/global": "^5.0.0",
- "@storybook/instrumenter": "8.4.5",
- "@storybook/test": "8.4.5",
+ "@storybook/instrumenter": "8.4.6",
+ "@storybook/test": "8.4.6",
"polished": "^4.2.2",
"ts-dedent": "^2.2.0"
},
@@ -3850,9 +3850,93 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^8.4.5"
+ "storybook": "^8.4.6"
+ }
+ },
+ "node_modules/@storybook/addon-interactions/node_modules/@storybook/instrumenter": {
+ "version": "8.4.6",
+ "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.4.6.tgz",
+ "integrity": "sha512-snXjlgbp065A6KoK9zkjBYEIMCSlN5JefPKzt1FC0rbcbtahhD+iPpqISKhDSczwgOku/JVhVUDp/vU7AIf4mg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@storybook/global": "^5.0.0",
+ "@vitest/utils": "^2.1.1"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "storybook": "^8.4.6"
+ }
+ },
+ "node_modules/@storybook/addon-interactions/node_modules/@storybook/test": {
+ "version": "8.4.6",
+ "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.4.6.tgz",
+ "integrity": "sha512-MeU1g65YgU66M2NtmEIL9gVeHk+en0k9Hp0wfxEO7NT/WLfaOD5RXLRDJVhbAlrH/6tLeWKIPNh/D26y27vO/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@storybook/csf": "^0.1.11",
+ "@storybook/global": "^5.0.0",
+ "@storybook/instrumenter": "8.4.6",
+ "@testing-library/dom": "10.4.0",
+ "@testing-library/jest-dom": "6.5.0",
+ "@testing-library/user-event": "14.5.2",
+ "@vitest/expect": "2.0.5",
+ "@vitest/spy": "2.0.5"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/storybook"
+ },
+ "peerDependencies": {
+ "storybook": "^8.4.6"
+ }
+ },
+ "node_modules/@storybook/addon-interactions/node_modules/@testing-library/jest-dom": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.5.0.tgz",
+ "integrity": "sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@adobe/css-tools": "^4.4.0",
+ "aria-query": "^5.0.0",
+ "chalk": "^3.0.0",
+ "css.escape": "^1.5.1",
+ "dom-accessibility-api": "^0.6.3",
+ "lodash": "^4.17.21",
+ "redent": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=14",
+ "npm": ">=6",
+ "yarn": ">=1"
}
},
+ "node_modules/@storybook/addon-interactions/node_modules/chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@storybook/addon-interactions/node_modules/dom-accessibility-api": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz",
+ "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@storybook/addon-styling-webpack": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@storybook/addon-styling-webpack/-/addon-styling-webpack-1.0.1.tgz",
@@ -3867,9 +3951,9 @@
}
},
"node_modules/@storybook/addon-themes": {
- "version": "8.4.5",
- "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.4.5.tgz",
- "integrity": "sha512-4ZheodvdAjAXbzx3HLmPxin5ULh1lPp7QH8Yi8SijRcreUYFiKvPfaTvR0pEcaFppwPXu1gVQlud5GLMTLEQgQ==",
+ "version": "8.4.6",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.4.6.tgz",
+ "integrity": "sha512-0Eyh7jxxQ8hc7KIO2bJF8BKY1CRJ9zPo2DKoRiUKDoSGSP8qdlj4V/ks892GcUffdhTjoFAJCRzG7Ff+TnVKrA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3880,13 +3964,13 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^8.4.5"
+ "storybook": "^8.4.6"
}
},
"node_modules/@storybook/addon-viewport": {
- "version": "8.4.5",
- "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.4.5.tgz",
- "integrity": "sha512-l7Y41gIbJAsIN/QCg1QJ9sr61FLz1C/imUotcDej41tOHxUTSQOlXpNtVnfhUM1vGQc0yNpP3pVxj8BpXi0cAw==",
+ "version": "8.4.6",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.4.6.tgz",
+ "integrity": "sha512-BuQll5YzOCpMS7p5Rsw9wcmi8hTnEKyg6+qAbkZNfiZ2JhXCa1GFUqX725fF1whpYVQULtkQxU8r+vahoRn7Yg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3897,7 +3981,7 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^8.4.5"
+ "storybook": "^8.4.6"
}
},
"node_modules/@storybook/addon-webpack5-compiler-swc": {
@@ -3915,13 +3999,13 @@
}
},
"node_modules/@storybook/builder-webpack5": {
- "version": "8.4.5",
- "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.4.5.tgz",
- "integrity": "sha512-5TSpirK2LIL4Wultpowlkrv3iAje57HTw92Hy6c4Zn64tAs30123mkdE6MoJcXMBfD4JwX9I2K2Q+ofZXblJPg==",
+ "version": "8.4.6",
+ "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.4.6.tgz",
+ "integrity": "sha512-/ZInCFk2myJZinnAU05bATe+9iJn3+YRoxl+CUpYljxzsjoqb7iAwaNaMNolZCDOnMj24Kg2Pt87WtzAhu+ilw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@storybook/core-webpack": "8.4.5",
+ "@storybook/core-webpack": "8.4.6",
"@types/node": "^22.0.0",
"@types/semver": "^7.3.4",
"browser-assert": "^1.2.1",
@@ -3952,7 +4036,7 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^8.4.5"
+ "storybook": "^8.4.6"
},
"peerDependenciesMeta": {
"typescript": {
@@ -3961,9 +4045,9 @@
}
},
"node_modules/@storybook/components": {
- "version": "8.4.5",
- "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.4.5.tgz",
- "integrity": "sha512-2PdnKfqNNv3sO7qILgWXiNvmLOi503oN9OMemNCQjTIvdvySc5JpS9/eClwcl/JfmE4qHdSHZr8dLLkBM9S7+Q==",
+ "version": "8.4.6",
+ "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.4.6.tgz",
+ "integrity": "sha512-9tKSJJCyFT5RZMRGyozTBJkr9C9Yfk1nuOE9XbDEE1Z+3/IypKR9+iwc5mfNBStDNY+rxtYWNLKBb5GPR2yhzA==",
"dev": true,
"license": "MIT",
"funding": {
@@ -3975,9 +4059,9 @@
}
},
"node_modules/@storybook/core": {
- "version": "8.4.5",
- "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.4.5.tgz",
- "integrity": "sha512-aB1sQNX5nRoUAqg5u1py0MuR/VPd6c6PhECa4rW6pmr7kZcfyP4PP6UFpXuN71ypTQlkRE3Vc5PQZ3gLhE9o3g==",
+ "version": "8.4.6",
+ "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.4.6.tgz",
+ "integrity": "sha512-WeojVtHy0/t50tzw/15S+DLzKsj8BN9yWdo3vJMvm+nflLFvfq1XvD9WGOWeaFp8E/o3AP+4HprXG0r42KEJtA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4007,9 +4091,9 @@
}
},
"node_modules/@storybook/core-webpack": {
- "version": "8.4.5",
- "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.4.5.tgz",
- "integrity": "sha512-IpK/3fM+l2WjRNplTtP+MtnRf/394GcBwyemZknUCzFFDJWNYAN1+meEZmOaZKzJ3tQyRYiErrJLHzd1+UH6Dw==",
+ "version": "8.4.6",
+ "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.4.6.tgz",
+ "integrity": "sha512-5NE4pUy0iHKc8UKHm7A7SikxSMOO92udl7kcBUlQKwcAgrAk1rFpvfXGodDb48AVgfK+07qAOSjBm7GcZ7X1jw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -4021,7 +4105,7 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^8.4.5"
+ "storybook": "^8.4.6"
}
},
"node_modules/@storybook/csf": {
@@ -4041,28 +4125,10 @@
"dev": true,
"license": "MIT"
},
- "node_modules/@storybook/instrumenter": {
- "version": "8.4.5",
- "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.4.5.tgz",
- "integrity": "sha512-8qM35FkueuRpJr0zA6ENvhQICbo+iKL1ln450DwV1kKJtc41KdbA3CuCvtZ/FnoPsFnwdtPjhhICFtRt8LRTSg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@storybook/global": "^5.0.0",
- "@vitest/utils": "^2.1.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/storybook"
- },
- "peerDependencies": {
- "storybook": "^8.4.5"
- }
- },
"node_modules/@storybook/manager-api": {
- "version": "8.4.5",
- "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.4.5.tgz",
- "integrity": "sha512-t39JaMy3UX4StbUH/tIDcaflBDxTcyIq853wQtBMhVL3e1+Dw3MIiiG/5bw79HU4R7kSmPVLXIIbV3FmXkq7KQ==",
+ "version": "8.4.6",
+ "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.4.6.tgz",
+ "integrity": "sha512-TsXlQ5m5rTl2KNT9icPFyy822AqXrx1QplZBt/L7cFn7SpqQKDeSta21FH7MG0piAvzOweXebVSqKngJ6cCWWQ==",
"dev": true,
"license": "MIT",
"funding": {
@@ -4088,14 +4154,14 @@
}
},
"node_modules/@storybook/preset-react-webpack": {
- "version": "8.4.5",
- "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.4.5.tgz",
- "integrity": "sha512-BKPAN7G0yFXfojQdF8tvgwVJ0ldcl6+p1JtAPAieH69BMGni3TEPnvPhkefRWcM8oM8pl+Hch/J2PLHiZ6QKNQ==",
+ "version": "8.4.6",
+ "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.4.6.tgz",
+ "integrity": "sha512-4AdsRug6NaWras/bbcFx7KEnJY5GLt3REPlSqMtZwhdY3f7LF0W++Wyo/F2ly82f57welquGURyL+YxjQ9yFkA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@storybook/core-webpack": "8.4.5",
- "@storybook/react": "8.4.5",
+ "@storybook/core-webpack": "8.4.6",
+ "@storybook/react": "8.4.6",
"@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0",
"@types/node": "^22.0.0",
"@types/semver": "^7.3.4",
@@ -4117,7 +4183,7 @@
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
- "storybook": "^8.4.5"
+ "storybook": "^8.4.6"
},
"peerDependenciesMeta": {
"typescript": {
@@ -4126,9 +4192,9 @@
}
},
"node_modules/@storybook/preview-api": {
- "version": "8.4.5",
- "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.4.5.tgz",
- "integrity": "sha512-MKIZ2jQO/3cUdsT57eq8jRgB6inALo9BxrQ88f7mqzltOkMvADvTAY6y8JZqTUoDzWTH/ny/8SGGdtpqlxRuiQ==",
+ "version": "8.4.6",
+ "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.4.6.tgz",
+ "integrity": "sha512-LbD+lR1FGvWaJBXteVx5xdgs1x1D7tyidBg2CsW2ex+cP0iJ176JgjPfutZxlWOfQnhfRYNnJ3WKoCIfxFOTKA==",
"dev": true,
"license": "MIT",
"funding": {
@@ -4140,18 +4206,18 @@
}
},
"node_modules/@storybook/react": {
- "version": "8.4.5",
- "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.4.5.tgz",
- "integrity": "sha512-2+p4aGEdGOnu2XNhnMi1B8GPeszm34P905HgqGD1cuz9gMt7x/bgZQaVxs6kpHZ3Hb6V9qp62La2dbAYatHdSw==",
+ "version": "8.4.6",
+ "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.4.6.tgz",
+ "integrity": "sha512-QAT23beoYNLhFGAXPimtuMErvpcI7eZbZ4AlLqW1fhiTZrRYw06cjC1bs9H3tODMcHH9LS5p3Wz9b29jtV2XGw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@storybook/components": "8.4.5",
+ "@storybook/components": "8.4.6",
"@storybook/global": "^5.0.0",
- "@storybook/manager-api": "8.4.5",
- "@storybook/preview-api": "8.4.5",
- "@storybook/react-dom-shim": "8.4.5",
- "@storybook/theming": "8.4.5"
+ "@storybook/manager-api": "8.4.6",
+ "@storybook/preview-api": "8.4.6",
+ "@storybook/react-dom-shim": "8.4.6",
+ "@storybook/theming": "8.4.6"
},
"engines": {
"node": ">=18.0.0"
@@ -4161,10 +4227,10 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "@storybook/test": "8.4.5",
+ "@storybook/test": "8.4.6",
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
- "storybook": "^8.4.5",
+ "storybook": "^8.4.6",
"typescript": ">= 4.2.x"
},
"peerDependenciesMeta": {
@@ -4197,9 +4263,9 @@
}
},
"node_modules/@storybook/react-dom-shim": {
- "version": "8.4.5",
- "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.4.5.tgz",
- "integrity": "sha512-YTWTfPagptEYXJsnxAl3zP97Ev0zebtaEV0WgjGaEeumr+zsfgKKwzzHxgrtumBmDzwkuKlzFwlQB5A8keOIGA==",
+ "version": "8.4.6",
+ "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.4.6.tgz",
+ "integrity": "sha512-f7RM8GO++fqMxbjNdEzeGS1P821jXuwRnAraejk5hyjB5SqetauFxMwoFYEYfJXPaLX2qIubnIJ78hdJ/IBaEA==",
"dev": true,
"license": "MIT",
"funding": {
@@ -4209,19 +4275,19 @@
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
- "storybook": "^8.4.5"
+ "storybook": "^8.4.6"
}
},
"node_modules/@storybook/react-webpack5": {
- "version": "8.4.5",
- "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.4.5.tgz",
- "integrity": "sha512-tmYO68I4c0mn2XwM4/WkzEVdP27umfa+Sce+NHkk6fGlp25BiKw70uE8sOkM1leB0wn4ktn9eBw46xXdJv2oew==",
+ "version": "8.4.6",
+ "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.4.6.tgz",
+ "integrity": "sha512-qUCOUoYW09voRhk0PzEZpZz6F5Ek9aHvVto8KW3lyYEuk6qujqUTNO6Y/X7hMraVt/C3l0+Ds4D5LEmxNBvd8g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@storybook/builder-webpack5": "8.4.5",
- "@storybook/preset-react-webpack": "8.4.5",
- "@storybook/react": "8.4.5",
+ "@storybook/builder-webpack5": "8.4.6",
+ "@storybook/preset-react-webpack": "8.4.6",
+ "@storybook/react": "8.4.6",
"@types/node": "^22.0.0"
},
"engines": {
@@ -4234,7 +4300,7 @@
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
- "storybook": "^8.4.5",
+ "storybook": "^8.4.6",
"typescript": ">= 4.2.x"
},
"peerDependenciesMeta": {
@@ -4296,9 +4362,9 @@
"license": "MIT"
},
"node_modules/@storybook/theming": {
- "version": "8.4.5",
- "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.4.5.tgz",
- "integrity": "sha512-45e/jeG4iuqdZcHg3PbB6dwXQTwlnnEB7r/QcVExyC7ibrkTnjUfvxzyUw4mmU3CXETFGD5EcUobFkgK+/aPxQ==",
+ "version": "8.4.6",
+ "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.4.6.tgz",
+ "integrity": "sha512-q7vDPN/mgj7cXIVQ9R1/V75hrzNgKkm2G0LjMo57//9/djQ+7LxvBsR1iScbFIRSEqppvMiBFzkts+2uXidySA==",
"dev": true,
"license": "MIT",
"funding": {
@@ -20417,13 +20483,13 @@
}
},
"node_modules/storybook": {
- "version": "8.4.5",
- "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.4.5.tgz",
- "integrity": "sha512-9tfgabXnMibYp3SvoaJXXMD63Pw0SA9Hnf5v6TxysCYZs4DZ/04fAkK+9RW+K4C5JkV83qXMMlrsPj766R47fg==",
+ "version": "8.4.6",
+ "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.4.6.tgz",
+ "integrity": "sha512-J6juZSZT2u3PUW0QZYZZYxBq6zU5O0OrkSgkMXGMg/QrS9to9IHmt4FjEMEyACRbXo8POcB/fSXa3VpGe7bv3g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@storybook/core": "8.4.5"
+ "@storybook/core": "8.4.6"
},
"bin": {
"getstorybook": "bin/index.cjs",
From 9aa4755a72c8f78dde6d42c62c8fb8432d0ab971 Mon Sep 17 00:00:00 2001
From: Brian Muenzenmeyer
Date: Wed, 4 Dec 2024 07:12:43 -0600
Subject: [PATCH 28/65] Add contribute link to navbar (#7274)
* add contribute to navbar
* delete duplicate content, add redirect
---
apps/site/navigation.json | 7 ++-
.../pages/en/about/get-involved/contribute.md | 53 -------------------
apps/site/redirects.json | 4 ++
packages/i18n/locales/en.json | 3 +-
4 files changed, 12 insertions(+), 55 deletions(-)
delete mode 100644 apps/site/pages/en/about/get-involved/contribute.md
diff --git a/apps/site/navigation.json b/apps/site/navigation.json
index c8a8ef2172f3b..75d25b24a069f 100644
--- a/apps/site/navigation.json
+++ b/apps/site/navigation.json
@@ -20,6 +20,11 @@
"link": "https://nodejs.org/docs/latest/api/",
"label": "components.containers.navBar.links.docs"
},
+ "contribute": {
+ "link": "https://github.com/nodejs/node/blob/main/CONTRIBUTING.md",
+ "label": "components.containers.navBar.links.contribute",
+ "target": "_blank"
+ },
"certification": {
"link": "https://training.linuxfoundation.org/openjs/",
"label": "components.containers.navBar.links.certification",
@@ -126,7 +131,7 @@
"label": "components.navigation.getInvolved.links.upcomingEvents"
},
"contribute": {
- "link": "/about/get-involved/contribute",
+ "link": "https://github.com/nodejs/node/blob/main/CONTRIBUTING.md",
"label": "components.navigation.getInvolved.links.contribute"
},
"codeOfConduct": {
diff --git a/apps/site/pages/en/about/get-involved/contribute.md b/apps/site/pages/en/about/get-involved/contribute.md
deleted file mode 100644
index ab4440ee7d567..0000000000000
--- a/apps/site/pages/en/about/get-involved/contribute.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: Contributing
-layout: about
----
-
-# Contributing
-
-Thank you for your interest in contributing to Node.js! There are multiple ways and places you can contribute, and we're here to help facilitate that.
-
-## Asking for General Help
-
-Because the level of activity in the `nodejs/node` repository is so high, questions or requests for general help using Node.js should be directed at the [Node.js help repository](https://github.com/nodejs/help/issues).
-
-## Reporting an Issue
-
-If you have found what you believe to be an issue with Node.js please do not hesitate to file an issue on the GitHub project. When filing your issue please make sure you can express the issue with a reproducible test case, and that test case should not include any external dependencies. That is to say, the test case can be executed without anything more than Node.js itself.
-
-When reporting an issue we also need as much information about your environment that you can include. We never know what information will be pertinent when trying to narrow down the issue. Please include at least the following information:
-
-- Version of Node.js
-- Platform you're running on (macOS, SmartOS, Linux, Windows)
-- Architecture you're running on (32bit or 64bit and x86 or ARM)
-
-The Node.js project is currently managed across a number of separate GitHub repositories, each with their own separate issues database. If possible, please direct any issues you are reporting to the appropriate repository but don't worry if things happen to get put in the wrong place, the community of contributors will be more than happy to help get you pointed in the right direction.
-
-- To report issues specific to Node.js, please use [nodejs/node](https://github.com/nodejs/node)
-- To report issues specific to this website, please use [nodejs/nodejs.org](https://github.com/nodejs/nodejs.org/issues). Please check if issues have already been reported before creating a new one. The [status page](https://status.nodejs.org) also reports any large-scale disruptions to the site and downloads.
-
-## Code contributions
-
-If you'd like to fix bugs or add a new feature to Node.js, please make sure you consult the [Node.js Contribution Guidelines](https://github.com/nodejs/node/blob/main/doc/contributing/pull-requests.md). The review process by existing collaborators for all contributions to the project is explained there as well.
-
-If you are wondering how to start, you can check [Node Todo](https://www.nodetodo.org/) which may guide you towards your first contribution.
-
-## Becoming a collaborator
-
-By becoming a collaborator, contributors can have even more impact on the project. They can help other contributors by reviewing their contributions, triaging issues and taking an even bigger part in shaping the project's future.
-
-Existing collaborators may identify and nominate individuals who make significant and valuable contributions across any Node.js repository to be a new collaborator and give them commit access to the project. Activities taken into consideration include (but are not limited to) the quality of:
-
-- Commits in the [nodejs/node][] repository.
-- Pull requests and issues opened in the [nodejs/node][] repository.
-- Comments on pull requests and issues in the [nodejs/node][] repository
-- Reviews on pull requests in the [nodejs/node][] repository
-- Help provided to end-users and novice contributors
-- Pull requests and issues opened throughout the Node.js organization
-- Comments on pull requests and issues throughout the Node.js organization
-- Participation in other projects, teams, and working groups of the Node.js organization
-- Other participation in the wider Node.js community
-
-Collaborators might overlook someone with valuable contributions. In that case, the contributor may open an issue or contact a collaborator to request a nomination.
-
-[nodejs/node]: https://github.com/nodejs/node
diff --git a/apps/site/redirects.json b/apps/site/redirects.json
index 737a924e747a1..37bcccf78a7c0 100644
--- a/apps/site/redirects.json
+++ b/apps/site/redirects.json
@@ -264,6 +264,10 @@
"source": "/:locale/get-involved/:path*",
"destination": "/:locale/about/get-involved/:path*"
},
+ {
+ "source": "/:locale/about/get-involved/contribute",
+ "destination": "https://github.com/nodejs/node/blob/main/CONTRIBUTING.md"
+ },
{
"source": "/learn",
"destination": "/en/learn"
diff --git a/packages/i18n/locales/en.json b/packages/i18n/locales/en.json
index 025560058e919..bdde9e07dcda2 100644
--- a/packages/i18n/locales/en.json
+++ b/packages/i18n/locales/en.json
@@ -19,7 +19,8 @@
"learn": "Learn",
"security": "Security",
"certification": "Certification",
- "blog": "Blog"
+ "blog": "Blog",
+ "contribute": "Contribute"
}
}
},
From 23556728ebf38bcd7b19631e280ab5bfe0ec2dce Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 4 Dec 2024 10:10:28 -0600
Subject: [PATCH 29/65] meta: bump turbo from 2.3.0 to 2.3.3 (#7304)
Bumps [turbo](https://github.com/vercel/turborepo) from 2.3.0 to 2.3.3.
- [Release notes](https://github.com/vercel/turborepo/releases)
- [Changelog](https://github.com/vercel/turborepo/blob/main/release.md)
- [Commits](https://github.com/vercel/turborepo/compare/v2.3.0...v2.3.3)
---
updated-dependencies:
- dependency-name: turbo
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package-lock.json | 26 +++++++++++++-------------
package.json | 2 +-
2 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index ea28b80357df9..792a08ec4c465 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -13,7 +13,7 @@
"dependencies": {
"husky": "9.1.7",
"lint-staged": "15.2.10",
- "turbo": "2.3.0"
+ "turbo": "2.3.3"
},
"devDependencies": {
"@eslint/js": "~9.16.0",
@@ -21883,26 +21883,26 @@
"license": "0BSD"
},
"node_modules/turbo": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.3.0.tgz",
- "integrity": "sha512-/uOq5o2jwRPyaUDnwBpOR5k9mQq4c3wziBgWNWttiYQPmbhDtrKYPRBxTvA2WpgQwRIbt8UM612RMN8n/TvmHA==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/turbo/-/turbo-2.3.3.tgz",
+ "integrity": "sha512-DUHWQAcC8BTiUZDRzAYGvpSpGLiaOQPfYXlCieQbwUvmml/LRGIe3raKdrOPOoiX0DYlzxs2nH6BoWJoZrj8hA==",
"license": "MIT",
"bin": {
"turbo": "bin/turbo"
},
"optionalDependencies": {
- "turbo-darwin-64": "2.3.0",
- "turbo-darwin-arm64": "2.3.0",
- "turbo-linux-64": "2.3.0",
- "turbo-linux-arm64": "2.3.0",
- "turbo-windows-64": "2.3.0",
- "turbo-windows-arm64": "2.3.0"
+ "turbo-darwin-64": "2.3.3",
+ "turbo-darwin-arm64": "2.3.3",
+ "turbo-linux-64": "2.3.3",
+ "turbo-linux-arm64": "2.3.3",
+ "turbo-windows-64": "2.3.3",
+ "turbo-windows-arm64": "2.3.3"
}
},
"node_modules/turbo-linux-64": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-2.3.0.tgz",
- "integrity": "sha512-jZqW6vc2sPJT3M/3ZmV1Cg4ecQVPqsbHncG/RnogHpBu783KCSXIndgxvUQNm9qfgBYbZDBnP1md63O4UTElhw==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-2.3.3.tgz",
+ "integrity": "sha512-eHj9OIB0dFaP6BxB88jSuaCLsOQSYWBgmhy2ErCu6D2GG6xW3b6e2UWHl/1Ho9FsTg4uVgo4DB9wGsKa5erjUA==",
"cpu": [
"x64"
],
diff --git a/package.json b/package.json
index 0f6cef3dadf18..91ccdb80ebaaa 100644
--- a/package.json
+++ b/package.json
@@ -37,7 +37,7 @@
"dependencies": {
"husky": "9.1.7",
"lint-staged": "15.2.10",
- "turbo": "2.3.0"
+ "turbo": "2.3.3"
},
"devDependencies": {
"@eslint/js": "~9.16.0",
From 98ccf4e53fd692ebea696aa0394b62db90e4fd4c Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 4 Dec 2024 10:15:52 -0600
Subject: [PATCH 30/65] meta: bump shiki from 1.23.1 to 1.24.0 (#7306)
Bumps [shiki](https://github.com/shikijs/shiki/tree/HEAD/packages/shiki) from 1.23.1 to 1.24.0.
- [Release notes](https://github.com/shikijs/shiki/releases)
- [Changelog](https://github.com/shikijs/shiki/blob/main/CHANGELOG.md)
- [Commits](https://github.com/shikijs/shiki/commits/v1.24.0/packages/shiki)
---
updated-dependencies:
- dependency-name: shiki
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
apps/site/package.json | 2 +-
package-lock.json | 68 +++++++++++++++++++++---------------------
2 files changed, 35 insertions(+), 35 deletions(-)
diff --git a/apps/site/package.json b/apps/site/package.json
index 631ec1d2eb6c2..2e5a46124a9c7 100644
--- a/apps/site/package.json
+++ b/apps/site/package.json
@@ -70,7 +70,7 @@
"remark-gfm": "~4.0.0",
"remark-reading-time": "~2.0.1",
"semver": "~7.6.3",
- "shiki": "~1.23.1",
+ "shiki": "~1.24.0",
"sval": "^0.5.2",
"tailwindcss": "~3.4.15",
"unist-util-visit": "~5.0.0",
diff --git a/package-lock.json b/package-lock.json
index 792a08ec4c465..4f28e50ae6380 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -82,7 +82,7 @@
"remark-gfm": "~4.0.0",
"remark-reading-time": "~2.0.1",
"semver": "~7.6.3",
- "shiki": "~1.23.1",
+ "shiki": "~1.24.0",
"sval": "^0.5.2",
"tailwindcss": "~3.4.15",
"unist-util-visit": "~5.0.0",
@@ -3736,44 +3736,44 @@
}
},
"node_modules/@shikijs/core": {
- "version": "1.23.1",
- "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.23.1.tgz",
- "integrity": "sha512-NuOVgwcHgVC6jBVH5V7iblziw6iQbWWHrj5IlZI3Fqu2yx9awH7OIQkXIcsHsUmY19ckwSgUMgrqExEyP5A0TA==",
+ "version": "1.24.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.24.0.tgz",
+ "integrity": "sha512-6pvdH0KoahMzr6689yh0QJ3rCgF4j1XsXRHNEeEN6M4xJTfQ6QPWrmHzIddotg+xPJUPEPzYzYCKzpYyhTI6Gw==",
"license": "MIT",
"dependencies": {
- "@shikijs/engine-javascript": "1.23.1",
- "@shikijs/engine-oniguruma": "1.23.1",
- "@shikijs/types": "1.23.1",
+ "@shikijs/engine-javascript": "1.24.0",
+ "@shikijs/engine-oniguruma": "1.24.0",
+ "@shikijs/types": "1.24.0",
"@shikijs/vscode-textmate": "^9.3.0",
"@types/hast": "^3.0.4",
"hast-util-to-html": "^9.0.3"
}
},
"node_modules/@shikijs/engine-javascript": {
- "version": "1.23.1",
- "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.23.1.tgz",
- "integrity": "sha512-i/LdEwT5k3FVu07SiApRFwRcSJs5QM9+tod5vYCPig1Ywi8GR30zcujbxGQFJHwYD7A5BUqagi8o5KS+LEVgBg==",
+ "version": "1.24.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.24.0.tgz",
+ "integrity": "sha512-ZA6sCeSsF3Mnlxxr+4wGEJ9Tto4RHmfIS7ox8KIAbH0MTVUkw3roHPHZN+LlJMOHJJOVupe6tvuAzRpN8qK1vA==",
"license": "MIT",
"dependencies": {
- "@shikijs/types": "1.23.1",
+ "@shikijs/types": "1.24.0",
"@shikijs/vscode-textmate": "^9.3.0",
- "oniguruma-to-es": "0.4.1"
+ "oniguruma-to-es": "0.7.0"
}
},
"node_modules/@shikijs/engine-oniguruma": {
- "version": "1.23.1",
- "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.23.1.tgz",
- "integrity": "sha512-KQ+lgeJJ5m2ISbUZudLR1qHeH3MnSs2mjFg7bnencgs5jDVPeJ2NVDJ3N5ZHbcTsOIh0qIueyAJnwg7lg7kwXQ==",
+ "version": "1.24.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.24.0.tgz",
+ "integrity": "sha512-Eua0qNOL73Y82lGA4GF5P+G2+VXX9XnuUxkiUuwcxQPH4wom+tE39kZpBFXfUuwNYxHSkrSxpB1p4kyRW0moSg==",
"license": "MIT",
"dependencies": {
- "@shikijs/types": "1.23.1",
+ "@shikijs/types": "1.24.0",
"@shikijs/vscode-textmate": "^9.3.0"
}
},
"node_modules/@shikijs/types": {
- "version": "1.23.1",
- "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.23.1.tgz",
- "integrity": "sha512-98A5hGyEhzzAgQh2dAeHKrWW4HfCMeoFER2z16p5eJ+vmPeF6lZ/elEne6/UCU551F/WqkopqRsr1l2Yu6+A0g==",
+ "version": "1.24.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.24.0.tgz",
+ "integrity": "sha512-aptbEuq1Pk88DMlCe+FzXNnBZ17LCiLIGWAeCWhoFDzia5Q5Krx3DgnULLiouSdd6+LUM39XwXGppqYE0Ghtug==",
"license": "MIT",
"dependencies": {
"@shikijs/vscode-textmate": "^9.3.0",
@@ -16736,14 +16736,14 @@
}
},
"node_modules/oniguruma-to-es": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-0.4.1.tgz",
- "integrity": "sha512-rNcEohFz095QKGRovP/yqPIKc+nP+Sjs4YTHMv33nMePGKrq/r2eu9Yh4646M5XluGJsUnmwoXuiXE69KDs+fQ==",
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-0.7.0.tgz",
+ "integrity": "sha512-HRaRh09cE0gRS3+wi2zxekB+I5L8C/gN60S+vb11eADHUaB/q4u8wGGOX3GvwvitG8ixaeycZfeoyruKQzUgNg==",
"license": "MIT",
"dependencies": {
"emoji-regex-xs": "^1.0.0",
- "regex": "^5.0.0",
- "regex-recursion": "^4.2.1"
+ "regex": "^5.0.2",
+ "regex-recursion": "^4.3.0"
}
},
"node_modules/open": {
@@ -18393,9 +18393,9 @@
}
},
"node_modules/regex-recursion": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-4.2.1.tgz",
- "integrity": "sha512-QHNZyZAeKdndD1G3bKAbBEKOSSK4KOHQrAJ01N1LJeb0SoH4DJIeFhp0uUpETgONifS4+P3sOgoA1dhzgrQvhA==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-4.3.0.tgz",
+ "integrity": "sha512-5LcLnizwjcQ2ALfOj95MjcatxyqF5RPySx9yT+PaXu3Gox2vyAtLDjHB8NTJLtMGkvyau6nI3CfpwFCjPUIs/A==",
"license": "MIT",
"dependencies": {
"regex-utilities": "^2.3.0"
@@ -20248,15 +20248,15 @@
}
},
"node_modules/shiki": {
- "version": "1.23.1",
- "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.23.1.tgz",
- "integrity": "sha512-8kxV9TH4pXgdKGxNOkrSMydn1Xf6It8lsle0fiqxf7a1149K1WGtdOu3Zb91T5r1JpvRPxqxU3C2XdZZXQnrig==",
+ "version": "1.24.0",
+ "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.24.0.tgz",
+ "integrity": "sha512-qIneep7QRwxRd5oiHb8jaRzH15V/S8F3saCXOdjwRLgozZJr5x2yeBhQtqkO3FSzQDwYEFAYuifg4oHjpDghrg==",
"license": "MIT",
"dependencies": {
- "@shikijs/core": "1.23.1",
- "@shikijs/engine-javascript": "1.23.1",
- "@shikijs/engine-oniguruma": "1.23.1",
- "@shikijs/types": "1.23.1",
+ "@shikijs/core": "1.24.0",
+ "@shikijs/engine-javascript": "1.24.0",
+ "@shikijs/engine-oniguruma": "1.24.0",
+ "@shikijs/types": "1.24.0",
"@shikijs/vscode-textmate": "^9.3.0",
"@types/hast": "^3.0.4"
}
From 0cc7474f0c050c358fdb74e6e38634e47c7798c3 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 5 Dec 2024 09:49:14 +1000
Subject: [PATCH 31/65] meta: bump @types/node from 22.9.3 to 22.10.1 (#7303)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 22.9.3 to 22.10.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)
---
updated-dependencies:
- dependency-name: "@types/node"
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
package-lock.json | 16 ++++++++--------
package.json | 2 +-
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index 4f28e50ae6380..0348d75710221 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -18,7 +18,7 @@
"devDependencies": {
"@eslint/js": "~9.16.0",
"@types/eslint__js": "8.42.3",
- "@types/node": "22.9.3",
+ "@types/node": "22.10.1",
"commitizen": "4.3.1",
"cz-conventional-changelog": "3.3.0",
"eslint": "~9.16.0",
@@ -4889,12 +4889,12 @@
"license": "MIT"
},
"node_modules/@types/node": {
- "version": "22.9.3",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.3.tgz",
- "integrity": "sha512-F3u1fs/fce3FFk+DAxbxc78DF8x0cY09RRL8GnXLmkJ1jvx3TtPdWoTT5/NiYfI5ASqXBmfqJi9dZ3gxMx4lzw==",
+ "version": "22.10.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz",
+ "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==",
"license": "MIT",
"dependencies": {
- "undici-types": "~6.19.8"
+ "undici-types": "~6.20.0"
}
},
"node_modules/@types/node-fetch": {
@@ -22269,9 +22269,9 @@
}
},
"node_modules/undici-types": {
- "version": "6.19.8",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
- "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
+ "version": "6.20.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz",
+ "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==",
"license": "MIT"
},
"node_modules/unified": {
diff --git a/package.json b/package.json
index 91ccdb80ebaaa..44963a5567104 100644
--- a/package.json
+++ b/package.json
@@ -42,7 +42,7 @@
"devDependencies": {
"@eslint/js": "~9.16.0",
"@types/eslint__js": "8.42.3",
- "@types/node": "22.9.3",
+ "@types/node": "22.10.1",
"commitizen": "4.3.1",
"cz-conventional-changelog": "3.3.0",
"eslint": "~9.16.0",
From 539d34ca311d46e296cda8b9537bc91a09b97b32 Mon Sep 17 00:00:00 2001
From: Augustin Mauroy
Date: Thu, 5 Dec 2024 12:24:38 +0100
Subject: [PATCH 32/65] feat(banner): add cyber week (#7311)
---
apps/site/site.json | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/apps/site/site.json b/apps/site/site.json
index 29a6f8c2915d4..c5d948cb42f65 100644
--- a/apps/site/site.json
+++ b/apps/site/site.json
@@ -28,10 +28,10 @@
],
"websiteBanners": {
"index": {
- "startDate": "2024-09-04T00:00:00.000Z",
- "endDate": "2024-09-30T00:00:00.000Z",
- "text": "Save 60% on Node.js Training and Certification through September 30 with code ROCKET60",
- "link": "https://training.linuxfoundation.org/openjs-sept-24-promo/",
+ "startDate": "2024-12-04T00:00:00.000Z",
+ "endDate": "2024-12-11T00:00:00.000Z",
+ "text": "Save up to 60% on Node.js courses and certifications",
+ "link": "https://training.linuxfoundation.org/cyber-monday-openjs-2024/",
"type": "default"
}
},
From 72bd044b329c7aa295ed8f29343316e130f4a684 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 5 Dec 2024 09:50:18 -0300
Subject: [PATCH 33/65] meta: bump typescript from 5.6.3 to 5.7.2 (#7302)
Bumps [typescript](https://github.com/microsoft/TypeScript) from 5.6.3 to 5.7.2.
- [Release notes](https://github.com/microsoft/TypeScript/releases)
- [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml)
- [Commits](https://github.com/microsoft/TypeScript/compare/v5.6.3...v5.7.2)
---
updated-dependencies:
- dependency-name: typescript
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
apps/site/package.json | 2 +-
package-lock.json | 8 ++++----
packages/i18n/package.json | 2 +-
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/apps/site/package.json b/apps/site/package.json
index 2e5a46124a9c7..ec72c7ccfb008 100644
--- a/apps/site/package.json
+++ b/apps/site/package.json
@@ -111,7 +111,7 @@
"stylelint-config-standard": "36.0.1",
"stylelint-order": "6.0.4",
"stylelint-selector-bem-pattern": "4.0.1",
- "typescript": "~5.6.3",
+ "typescript": "~5.7.2",
"typescript-eslint": "~8.16.0",
"user-agent-data-types": "0.4.2"
}
diff --git a/package-lock.json b/package-lock.json
index 0348d75710221..eb711fc733a15 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -123,7 +123,7 @@
"stylelint-config-standard": "36.0.1",
"stylelint-order": "6.0.4",
"stylelint-selector-bem-pattern": "4.0.1",
- "typescript": "~5.6.3",
+ "typescript": "~5.7.2",
"typescript-eslint": "~8.16.0",
"user-agent-data-types": "0.4.2"
},
@@ -22034,9 +22034,9 @@
"license": "MIT"
},
"node_modules/typescript": {
- "version": "5.6.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz",
- "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==",
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz",
+ "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==",
"devOptional": true,
"license": "Apache-2.0",
"bin": {
diff --git a/packages/i18n/package.json b/packages/i18n/package.json
index 377c70a847bf7..0aab7b7f3e21f 100644
--- a/packages/i18n/package.json
+++ b/packages/i18n/package.json
@@ -17,7 +17,7 @@
},
"devDependencies": {
"eslint-import-resolver-typescript": "~3.6.3",
- "typescript": "~5.6.3",
+ "typescript": "~5.7.2",
"typescript-eslint": "~8.16.0"
}
}
From a82caf7b0f2ac64fa4692bac7a0d41eae314e49c Mon Sep 17 00:00:00 2001
From: Brian Muenzenmeyer
Date: Thu, 5 Dec 2024 08:23:14 -0600
Subject: [PATCH 34/65] Automated, scheduled crowdin sync (#7272)
* chore: add wip action
* feat: automated crowdin sync
* add dry run, workflow_dispatch
* rename token
* add mention of translation deployment
* Update .github/workflows/translations-sync.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Brian Muenzenmeyer
* docs: clarified our translation flows
* separate translation source upload from download
* Update TRANSLATION.md
Co-authored-by: Michael Esteban
Signed-off-by: Brian Muenzenmeyer
* Update .github/workflows/translations-sync.yml
Co-authored-by: Claudio W
Signed-off-by: Brian Muenzenmeyer
* Update .github/workflows/translations-upload.yml
Co-authored-by: Claudio W
Signed-off-by: Brian Muenzenmeyer
---------
Signed-off-by: Brian Muenzenmeyer
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Michael Esteban
Co-authored-by: Claudio W
---
...ml => translations-pr-lint-and-format.yml} | 3 +-
.github/workflows/translations-sync.yml | 54 +++++++++++++++++++
.github/workflows/translations-upload.yml | 41 ++++++++++++++
TRANSLATION.md | 9 ++++
crowdin.yml | 6 +--
5 files changed, 108 insertions(+), 5 deletions(-)
rename .github/workflows/{translations-pr.yml => translations-pr-lint-and-format.yml} (97%)
create mode 100644 .github/workflows/translations-sync.yml
create mode 100644 .github/workflows/translations-upload.yml
diff --git a/.github/workflows/translations-pr.yml b/.github/workflows/translations-pr-lint-and-format.yml
similarity index 97%
rename from .github/workflows/translations-pr.yml
rename to .github/workflows/translations-pr-lint-and-format.yml
index f3dce60376045..681d9a6108538 100644
--- a/.github/workflows/translations-pr.yml
+++ b/.github/workflows/translations-pr-lint-and-format.yml
@@ -1,7 +1,8 @@
# This Workflow is used to comment on PRs that have changes that touch Translated Files
# and then comments on their PRs mentioning that they should not do so
+# It also formats incoming content because it is often not adherent to our rules post-translation.
-name: Crowdin Checks
+name: Incoming Translation Checks
on:
pull_request_target:
diff --git a/.github/workflows/translations-sync.yml b/.github/workflows/translations-sync.yml
new file mode 100644
index 0000000000000..2c492b2da07f4
--- /dev/null
+++ b/.github/workflows/translations-sync.yml
@@ -0,0 +1,54 @@
+# This action automates the synchronization of our crowdin translations, so that a human does not need to kick it off from the crowdin UI
+# See translations-upload.yml for automation to upload our source content
+# See translations-pr-lint-and-format.yml for quality control we conduct on ingress of new translations.
+name: Crowdin Download
+
+on:
+ workflow_dispatch: # Allow running when we want to, for events such as urgent translation mistakes or 100% completed languages
+ schedule:
+ - cron: '0 5 * * 5' # At 05:00 on Fridays. This guarantees that we have the 72 hour weekend time to review translations.
+
+# Cancel any runs on the same branch
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ # These permissions required by `crowdin/github-action`
+ contents: write
+ pull-requests: write
+
+jobs:
+ synchronize-with-crowdin:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Harden Runner
+ uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1
+ with:
+ egress-policy: audit
+
+ - name: Checkout
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+
+ # see all the options at https://github.com/crowdin/github-action
+ - name: crowdin action
+ uses: crowdin/github-action@2d540f18b0a416b1fbf2ee5be35841bd380fc1da # v2.3.0
+ with:
+ # do not upload anything - this is a one-way operation download
+ upload_sources: false
+ upload_translations: false
+ # the rest of this controls how the PR comes in with new translations
+ download_translations: true
+ localization_branch_name: chore/crowdin
+ create_pull_request: true
+ pull_request_title: '[automated]: crowdin sync'
+ pull_request_body: 'New Crowdin translations from the [Node.js Crowdin project](https://crowdin.com/project/nodejs-web)'
+ pull_request_labels: github_actions:pull-request
+ commit_message: 'chore: synced translations from crowdin [skip ci]'
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ # A numeric ID, found at https://crowdin.com/project/nodejs-web/tools/api
+ CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
+ # Created from https://crowdin.com/settings#api-key logged in using nodejs-crowdin-bot
+ CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
diff --git a/.github/workflows/translations-upload.yml b/.github/workflows/translations-upload.yml
new file mode 100644
index 0000000000000..5344797cb67d8
--- /dev/null
+++ b/.github/workflows/translations-upload.yml
@@ -0,0 +1,41 @@
+# This action automates the upload of our source content to crowdin.
+# See translations-sync.yml for the automation to download new translations on a schedule
+# See translations-pr-lint-and-format.yml for quality control we conduct on ingress of new translations.
+name: Crowdin Upload
+
+on:
+ push:
+ branches: [main]
+
+# Cancel any runs on the same branch
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+jobs:
+ upload-to-crowdin:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Harden Runner
+ uses: step-security/harden-runner@91182cccc01eb5e619899d80e4e971d6181294a7 # v2.10.1
+ with:
+ egress-policy: audit
+
+ - name: Checkout
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+
+ # see all the options at https://github.com/crowdin/github-action
+ - name: crowdin action
+ uses: crowdin/github-action@2d540f18b0a416b1fbf2ee5be35841bd380fc1da # v2.3.0
+ with:
+ # only upload sources, ensuring this is a one-way operation
+ upload_sources: true
+ upload_translations: false
+ download_translations: false
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ # A numeric ID, found at https://crowdin.com/project/nodejs-web/tools/api
+ CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
+ # Created from https://crowdin.com/settings#api-key logged in using nodejs-crowdin-bot
+ CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
diff --git a/TRANSLATION.md b/TRANSLATION.md
index 8f5ccd89efaf3..fa36471837cc6 100644
--- a/TRANSLATION.md
+++ b/TRANSLATION.md
@@ -87,3 +87,12 @@ Translation Keys should not be translated during Unit Testing. If your Component
- Unit Tests should not rely on text, titles, or string bags, as these texts will change arbitrarily and make the test suite fail.
- In this case, you should test your component by aria-text, or other `aria-*` attributes or even by class names or other artifacts.
- Visual Regression Testing is recommended to test how different languages and text appear within a Component.
+
+## Deploying Translations
+
+Translations are synced between Crowdin and the repository via GitHub Actions.
+
+- On every push to `main`, we upload any new source content.
+- Via a cron schedule, and as needed manually by a collaborator, we download completed translations.
+
+Incoming translations are linted to ensure they come from crowdin, and are also formatted to adhere to our project settings.
diff --git a/crowdin.yml b/crowdin.yml
index 644c8d597bf99..e2c04f56dde08 100644
--- a/crowdin.yml
+++ b/crowdin.yml
@@ -1,8 +1,6 @@
-commit_message: 'chore: synced translations from crowdin [skip ci]'
+project_id_env: 'CROWDIN_PROJECT_ID'
+api_token_env: 'CROWDIN_PERSONAL_TOKEN'
append_commit_message: false
-pull_request_title: '[automated]: crowdin sync'
-pull_request_labels:
- - 'github_actions:pull-request'
files:
- source: /apps/site/pages/en/**/*.md
translation: /apps/site/pages/%two_letters_code%/**/%original_file_name%
From b2ade804ebc22eb661a18b93de385784df475532 Mon Sep 17 00:00:00 2001
From: Brian Muenzenmeyer
Date: Thu, 5 Dec 2024 08:46:45 -0600
Subject: [PATCH 35/65] hotfix: fix typos, trigger crowdin sync
---
.../blog/npm/managing-node-js-dependencies-with-shrinkwrap.md | 2 +-
.../an-introduction-to-the-npm-package-manager.md | 2 +-
.../pages/en/learn/getting-started/security-best-practices.md | 4 ++--
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/apps/site/pages/en/blog/npm/managing-node-js-dependencies-with-shrinkwrap.md b/apps/site/pages/en/blog/npm/managing-node-js-dependencies-with-shrinkwrap.md
index f947937cfc773..66bdabb1840be 100644
--- a/apps/site/pages/en/blog/npm/managing-node-js-dependencies-with-shrinkwrap.md
+++ b/apps/site/pages/en/blog/npm/managing-node-js-dependencies-with-shrinkwrap.md
@@ -14,7 +14,7 @@ author: Dave Pacheco
Photo by Luc Viatour (flickr)
-**This post is outdated.** Please refer to official npm documentation on [shrinkwrap](https://docs.npmjs.com/cli/v8/configuring-npm/npm-shrinkwrap-json) and/or [lockfiles](https://docs.npmjs.com/cli/v8/configuring-npm/package-lock-json) instead.
+**This post is outdated.** Please refer to official npm documentation on [shrinkwrap](https://docs.npmjs.com/cli/configuring-npm/npm-shrinkwrap-json) and/or [lockfiles](https://docs.npmjs.com/cli/configuring-npm/package-lock-json) instead.
Original contents
diff --git a/apps/site/pages/en/learn/getting-started/an-introduction-to-the-npm-package-manager.md b/apps/site/pages/en/learn/getting-started/an-introduction-to-the-npm-package-manager.md
index 103d50ca710dc..9ece9b64a5d74 100644
--- a/apps/site/pages/en/learn/getting-started/an-introduction-to-the-npm-package-manager.md
+++ b/apps/site/pages/en/learn/getting-started/an-introduction-to-the-npm-package-manager.md
@@ -55,7 +55,7 @@ Shorthands of the flags can also be used:
The difference between _devDependencies_ and _dependencies_ is that the former contains development tools, like a testing library, while the latter is bundled with the app in production.
-As for the _optionalDependencies_ the difference is that build failure of the dependency will not cause installation to fail. But it is your program's responsibility to handle the lack of the dependency. Read more about [optional dependencies](https://docs.npmjs.com/cli/v7/configuring-npm/package-json#optionaldependencies).
+As for the _optionalDependencies_ the difference is that build failure of the dependency will not cause installation to fail. But it is your program's responsibility to handle the lack of the dependency. Read more about [optional dependencies](https://docs.npmjs.com/cli/configuring-npm/package-json#optionaldependencies).
### Updating packages
diff --git a/apps/site/pages/en/learn/getting-started/security-best-practices.md b/apps/site/pages/en/learn/getting-started/security-best-practices.md
index 6833efa8b49fe..e380409d18e9e 100644
--- a/apps/site/pages/en/learn/getting-started/security-best-practices.md
+++ b/apps/site/pages/en/learn/getting-started/security-best-practices.md
@@ -442,14 +442,14 @@ The [OpenSSF][] is leading several initiatives that can be very useful, especial
[--inspect switch]: /learn/getting-started/debugging
[same-origin policy]: /learn/getting-started/debugging
[DNS Rebinding wiki]: https://en.wikipedia.org/wiki/DNS_rebinding
-[files property]: https://docs.npmjs.com/cli/v8/configuring-npm/package-json#files
+[files property]: https://docs.npmjs.com/cli/configuring-npm/package-json#files
[unpublish the package]: https://docs.npmjs.com/unpublishing-packages-from-the-registry
[CWE-444]: https://cwe.mitre.org/data/definitions/444.html
[RFC7230]: https://datatracker.ietf.org/doc/html/rfc7230#section-3
[policy mechanism]: https://nodejs.org/api/permissions.html#policies
[typosquatting]: https://en.wikipedia.org/wiki/Typosquatting
[Mitigations for lockfile poisoning]: https://blog.ulisesgascon.com/lockfile-posioned
-[`npm ci`]: https://docs.npmjs.com/cli/v8/commands/npm-ci
+[`npm ci`]: https://docs.npmjs.com/cli/commands/npm-ci
[secure-heap documentation]: https://nodejs.org/dist/latest-v18.x/docs/api/cli.html#--secure-heapn
[CVE-2022-21824]: https://www.cvedetails.com/cve/CVE-2022-21824/
[CVE-2018-3721]: https://www.cvedetails.com/cve/CVE-2018-3721/
From 64b507646278eb2738b9bb5bcc0423710846a457 Mon Sep 17 00:00:00 2001
From: Brian Muenzenmeyer
Date: Thu, 5 Dec 2024 09:07:40 -0600
Subject: [PATCH 36/65] hotfix: add preserve_hierarchy to crowdin
---
crowdin.yml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/crowdin.yml b/crowdin.yml
index e2c04f56dde08..b62e543aa024f 100644
--- a/crowdin.yml
+++ b/crowdin.yml
@@ -1,6 +1,8 @@
project_id_env: 'CROWDIN_PROJECT_ID'
api_token_env: 'CROWDIN_PERSONAL_TOKEN'
append_commit_message: false
+preserve_hierarchy: true
+
files:
- source: /apps/site/pages/en/**/*.md
translation: /apps/site/pages/%two_letters_code%/**/%original_file_name%
From 05bd5b26ea350940a1ae492fcf1f5a879767d41a Mon Sep 17 00:00:00 2001
From: Brian Muenzenmeyer
Date: Thu, 5 Dec 2024 09:29:31 -0600
Subject: [PATCH 37/65] hotfix: trigger crowdin one more time
---
crowdin.yml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/crowdin.yml b/crowdin.yml
index b62e543aa024f..e32fefb9b6019 100644
--- a/crowdin.yml
+++ b/crowdin.yml
@@ -1,6 +1,8 @@
project_id_env: 'CROWDIN_PROJECT_ID'
api_token_env: 'CROWDIN_PERSONAL_TOKEN'
append_commit_message: false
+
+# without this, crowdin will flatten all files
preserve_hierarchy: true
files:
From 00ed3f49c71bfea46287079f06f2ed4ee6a30b13 Mon Sep 17 00:00:00 2001
From: Rafael Gonzaga
Date: Thu, 5 Dec 2024 19:25:51 -0300
Subject: [PATCH 38/65] fix: include npm audit reference link (#7309)
* fix: include npm audit reference link
* Update apps/site/pages/en/learn/getting-started/security-best-practices.md
Co-authored-by: Michael Esteban
Signed-off-by: Rafael Gonzaga
* Update apps/site/pages/en/learn/getting-started/security-best-practices.md
Signed-off-by: Brian Muenzenmeyer
---------
Signed-off-by: Rafael Gonzaga
Signed-off-by: Brian Muenzenmeyer
Co-authored-by: Michael Esteban
Co-authored-by: Brian Muenzenmeyer
---
.../pages/en/learn/getting-started/security-best-practices.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/apps/site/pages/en/learn/getting-started/security-best-practices.md b/apps/site/pages/en/learn/getting-started/security-best-practices.md
index e380409d18e9e..03ce9976143fd 100644
--- a/apps/site/pages/en/learn/getting-started/security-best-practices.md
+++ b/apps/site/pages/en/learn/getting-started/security-best-practices.md
@@ -449,7 +449,8 @@ The [OpenSSF][] is leading several initiatives that can be very useful, especial
[policy mechanism]: https://nodejs.org/api/permissions.html#policies
[typosquatting]: https://en.wikipedia.org/wiki/Typosquatting
[Mitigations for lockfile poisoning]: https://blog.ulisesgascon.com/lockfile-posioned
-[`npm ci`]: https://docs.npmjs.com/cli/commands/npm-ci
+[`npm-audit`]: https://docs.npmjs.com/cli/commands/npm-audit
+[`npm ci`]: https://docs.npmjs.com/cli/v8/commands/npm-ci
[secure-heap documentation]: https://nodejs.org/dist/latest-v18.x/docs/api/cli.html#--secure-heapn
[CVE-2022-21824]: https://www.cvedetails.com/cve/CVE-2022-21824/
[CVE-2018-3721]: https://www.cvedetails.com/cve/CVE-2018-3721/
From b5561c0f4dd4698803d8a04eba04f32cb24a9318 Mon Sep 17 00:00:00 2001
From: Rafael Gonzaga
Date: Thu, 5 Dec 2024 23:14:08 -0300
Subject: [PATCH 39/65] meta: add security-wg as owners of security practices
(#7310)
---
CODEOWNERS | 2 ++
1 file changed, 2 insertions(+)
diff --git a/CODEOWNERS b/CODEOWNERS
index 5949e894a60eb..3b27db769a6cb 100644
--- a/CODEOWNERS
+++ b/CODEOWNERS
@@ -21,3 +21,5 @@ turbo.json @nodejs/nodejs-website @nodejs/web-infra
crowdin.yml @nodejs/web-infra
apps/site/redirects.json @nodejs/web-infra
apps/site/site.json @nodejs/web-infra
+
+apps/site/pages/en/learn/getting-started/security-best-practices.md @nodejs/security-wg
From b0500ea36d1cf220c456301df356cfd5db038cea Mon Sep 17 00:00:00 2001
From: Brian Muenzenmeyer
Date: Fri, 6 Dec 2024 11:27:02 -0600
Subject: [PATCH 40/65] hotfix: allow a workflow to trigger another workflow
Signed-off-by: Brian Muenzenmeyer
---
.github/workflows/translations-pr-lint-and-format.yml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/.github/workflows/translations-pr-lint-and-format.yml b/.github/workflows/translations-pr-lint-and-format.yml
index 681d9a6108538..82c2d62c466ea 100644
--- a/.github/workflows/translations-pr-lint-and-format.yml
+++ b/.github/workflows/translations-pr-lint-and-format.yml
@@ -5,6 +5,12 @@
name: Incoming Translation Checks
on:
+ # run when new translations download
+ workflow_run:
+ workflows: ["Crowdin Download"]
+ types:
+ - completed
+ # run when someone tries to manually change localized content
pull_request_target:
branches:
- main
From 73e32e4b42ad62442b36f639e8da0f2b222b8867 Mon Sep 17 00:00:00 2001
From: Brian Muenzenmeyer
Date: Fri, 6 Dec 2024 11:38:09 -0600
Subject: [PATCH 41/65] hotfix: remove ci-skip
Signed-off-by: Brian Muenzenmeyer
---
.github/workflows/translations-sync.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/translations-sync.yml b/.github/workflows/translations-sync.yml
index 2c492b2da07f4..6b957a2d1b4d9 100644
--- a/.github/workflows/translations-sync.yml
+++ b/.github/workflows/translations-sync.yml
@@ -45,7 +45,7 @@ jobs:
pull_request_title: '[automated]: crowdin sync'
pull_request_body: 'New Crowdin translations from the [Node.js Crowdin project](https://crowdin.com/project/nodejs-web)'
pull_request_labels: github_actions:pull-request
- commit_message: 'chore: synced translations from crowdin [skip ci]'
+ commit_message: 'chore: synced translations from crowdin'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# A numeric ID, found at https://crowdin.com/project/nodejs-web/tools/api
From f17fc094509d9019677cabd9b962e903f57f3a12 Mon Sep 17 00:00:00 2001
From: Brian Muenzenmeyer
Date: Fri, 6 Dec 2024 11:57:48 -0600
Subject: [PATCH 42/65] hotfix: provide proper context to workflow
---
.github/workflows/translations-pr-lint-and-format.yml | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/.github/workflows/translations-pr-lint-and-format.yml b/.github/workflows/translations-pr-lint-and-format.yml
index 82c2d62c466ea..bd4066e732aa5 100644
--- a/.github/workflows/translations-pr-lint-and-format.yml
+++ b/.github/workflows/translations-pr-lint-and-format.yml
@@ -7,7 +7,7 @@ name: Incoming Translation Checks
on:
# run when new translations download
workflow_run:
- workflows: ["Crowdin Download"]
+ workflows: ['Crowdin Download']
types:
- completed
# run when someone tries to manually change localized content
@@ -34,8 +34,9 @@ jobs:
comment_on_translation_pr:
# This comment should always be posted on forks, or from internal PRs not originating from Crowdin (which are direct branches)
if: |
- (github.event.pull_request.head.repo.full_name != 'nodejs/nodejs.org') ||
- (github.event.pull_request.head.repo.full_name == 'nodejs/nodejs.org' && github.event.pull_request.head.ref != 'chore/crowdin')
+ (github.event_name == 'workflow_run' && github.event.workflow_run.head_commit.message != 'chore: synced translations from crowdin') ||
+ (github.event_name == 'pull_request_target' && github.event.pull_request.head.repo.full_name != 'nodejs/nodejs.org') ||
+ (github.event_name == 'pull_request_target' && github.event.pull_request.head.repo.full_name == 'nodejs/nodejs.org' && github.event.pull_request.head.ref != 'chore/crowdin')
name: Comment on Translation PR
runs-on: ubuntu-latest
@@ -65,8 +66,8 @@ jobs:
format_crowdin_pull_request:
# We should only run the automated Format Command on Crowdin-based Pull Requests
if: |
- github.event.pull_request.head.repo.full_name == 'nodejs/nodejs.org' &&
- github.event.pull_request.head.ref == 'chore/crowdin'
+ (github.event_name == 'workflow_run' && github.event.workflow_run.head_commit.message == 'chore: synced translations from crowdin') ||
+ (github.event_name == 'pull_request_target' && github.event.pull_request.head.repo.full_name == 'nodejs/nodejs.org' && github.event.pull_request.head.ref == 'chore/crowdin')
name: Format Crowdin Pull Request
runs-on: ubuntu-latest
From 2c514138a2b43ac8a13e8edfc91df1055dcac962 Mon Sep 17 00:00:00 2001
From: Brian Muenzenmeyer
Date: Fri, 6 Dec 2024 12:04:30 -0600
Subject: [PATCH 43/65] hotfix: don't warn on workflow_run events
---
.github/workflows/translations-pr-lint-and-format.yml | 1 -
1 file changed, 1 deletion(-)
diff --git a/.github/workflows/translations-pr-lint-and-format.yml b/.github/workflows/translations-pr-lint-and-format.yml
index bd4066e732aa5..3a8433aeae631 100644
--- a/.github/workflows/translations-pr-lint-and-format.yml
+++ b/.github/workflows/translations-pr-lint-and-format.yml
@@ -34,7 +34,6 @@ jobs:
comment_on_translation_pr:
# This comment should always be posted on forks, or from internal PRs not originating from Crowdin (which are direct branches)
if: |
- (github.event_name == 'workflow_run' && github.event.workflow_run.head_commit.message != 'chore: synced translations from crowdin') ||
(github.event_name == 'pull_request_target' && github.event.pull_request.head.repo.full_name != 'nodejs/nodejs.org') ||
(github.event_name == 'pull_request_target' && github.event.pull_request.head.repo.full_name == 'nodejs/nodejs.org' && github.event.pull_request.head.ref != 'chore/crowdin')
From 0e15440e89d4b7afe76c8dc5f9f026a3e656eb99 Mon Sep 17 00:00:00 2001
From: Brian Muenzenmeyer
Date: Sat, 7 Dec 2024 05:55:17 -0600
Subject: [PATCH 44/65] hotfix: move i18n formatting to sync workflow
---
.../translations-pr-lint-and-format.yml | 140 ------------------
.github/workflows/translations-pr-lint.yml | 57 +++++++
.github/workflows/translations-sync.yml | 82 +++++++++-
.github/workflows/translations-upload.yml | 2 +-
4 files changed, 134 insertions(+), 147 deletions(-)
delete mode 100644 .github/workflows/translations-pr-lint-and-format.yml
create mode 100644 .github/workflows/translations-pr-lint.yml
diff --git a/.github/workflows/translations-pr-lint-and-format.yml b/.github/workflows/translations-pr-lint-and-format.yml
deleted file mode 100644
index 3a8433aeae631..0000000000000
--- a/.github/workflows/translations-pr-lint-and-format.yml
+++ /dev/null
@@ -1,140 +0,0 @@
-# This Workflow is used to comment on PRs that have changes that touch Translated Files
-# and then comments on their PRs mentioning that they should not do so
-# It also formats incoming content because it is often not adherent to our rules post-translation.
-
-name: Incoming Translation Checks
-
-on:
- # run when new translations download
- workflow_run:
- workflows: ['Crowdin Download']
- types:
- - completed
- # run when someone tries to manually change localized content
- pull_request_target:
- branches:
- - main
- paths:
- - 'apps/site/pages/**/*.md'
- - 'apps/site/pages/**/*.mdx'
- - '!apps/site/pages/en/**/*.md'
- - '!apps/site/pages/en/**/*.mdx'
- - 'packages/i18n/locales/*.json'
- - '!packages/i18n/locales/en.json'
-
-# Cancel any runs on the same branch
-concurrency:
- group: ${{ github.workflow }}-${{ github.ref }}
- cancel-in-progress: true
-
-permissions:
- actions: read
-
-jobs:
- comment_on_translation_pr:
- # This comment should always be posted on forks, or from internal PRs not originating from Crowdin (which are direct branches)
- if: |
- (github.event_name == 'pull_request_target' && github.event.pull_request.head.repo.full_name != 'nodejs/nodejs.org') ||
- (github.event_name == 'pull_request_target' && github.event.pull_request.head.repo.full_name == 'nodejs/nodejs.org' && github.event.pull_request.head.ref != 'chore/crowdin')
-
- name: Comment on Translation PR
- runs-on: ubuntu-latest
-
- permissions:
- # This permission is required by `thollander/actions-comment-pull-request`
- pull-requests: write
-
- steps:
- - name: Harden Runner
- uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2
- with:
- egress-policy: audit
-
- - uses: thollander/actions-comment-pull-request@e2c37e53a7d2227b61585343765f73a9ca57eda9 # v3.0.0
- with:
- message: |
- > [!NOTE]\
- > Your Pull Request seems to be updating **Translations** of the Node.js Website.
- >
- > Whilst we appreciate your intent; Any Translation update should be done through our [Crowdin Project](https://crowdin.com/project/nodejs-web).
- > We recommend giving a read on our [Translation Guidelines](https://github.com/nodejs/nodejs.org/blob/main/TRANSLATION.md).
- >
- > Thank you!
- comment-tag: use_crowdin
-
- format_crowdin_pull_request:
- # We should only run the automated Format Command on Crowdin-based Pull Requests
- if: |
- (github.event_name == 'workflow_run' && github.event.workflow_run.head_commit.message == 'chore: synced translations from crowdin') ||
- (github.event_name == 'pull_request_target' && github.event.pull_request.head.repo.full_name == 'nodejs/nodejs.org' && github.event.pull_request.head.ref == 'chore/crowdin')
-
- name: Format Crowdin Pull Request
- runs-on: ubuntu-latest
-
- permissions:
- # This permission is required by `stefanzweifel/git-auto-commit-action`
- contents: write
-
- steps:
- - name: Harden Runner
- uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2
- with:
- egress-policy: audit
-
- - name: Git Checkout
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- with:
- # Provides the Pull Request commit SHA or the GitHub merge group ref
- ref: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.sha || github.ref }}
-
- - name: Restore Lint Cache
- uses: actions/cache/restore@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2
- with:
- path: |
- apps/site/.eslintmdcache
- apps/site/.prettiercache
- # We want to restore Turborepo Cache and ESlint and Prettier Cache
- # The ESLint and Prettier cache's are useful to reduce the overall runtime of ESLint and Prettier
- # as they will only run on files that have changed since the last cached run
- # this might of course lead to certain files not being checked against the linter, but the chances
- # of such situation from happening are very slim as the checksums of both files would need to match
- key: cache-lint-${{ hashFiles('package-lock.json') }}-
- restore-keys: |
- cache-lint-${{ hashFiles('package-lock.json') }}-
- cache-lint-
-
- - name: Set up Node.js
- uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
- with:
- # We want to ensure that the Node.js version running here respects our supported versions
- node-version-file: '.nvmrc'
- cache: 'npm'
-
- - name: Install npm packages
- # We want to avoid npm from running the Audit Step and Funding messages on a CI environment
- # We also use `npm i` instead of `npm ci` so that the node_modules/.cache folder doesn't get deleted
- run: npm i --no-audit --no-fund --ignore-scripts --userconfig=/dev/null
-
- - name: Run `npx lint:md --fix`
- # This runs a specific version of ESLint with only the Translation Pages Globbing
- # This avoid that unrelated changes get linted/modified within this PR
- run: npx eslint "apps/site/pages/**/*.md?(x)" --fix --cache --cache-strategy=metadata --cache-file=apps/site/.eslintmdcache --config=apps/site/eslint.config.js
-
- - name: Run `npx prettier --write`
- # This runs a specific version of Prettier with only the Translation Pages Globbing
- # This avoid that unrelated changes get prettied/modified within this PR
- run: npx prettier "apps/site/{pages,i18n}/**/*.{json,md,mdx}" --check --write --cache --cache-strategy=metadata --cache-location=apps/site/.prettiercache
-
- - name: Push Changes back to Pull Request
- uses: stefanzweifel/git-auto-commit-action@8621497c8c39c72f3e2a999a26b4ca1b5058a842 # v5.0.1
- with:
- commit_options: '--no-verify --signoff'
- commit_message: 'chore: automated format of translated files'
-
- - name: Save Lint Cache
- uses: actions/cache/save@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2
- with:
- path: |
- apps/site/.eslintmdcache
- apps/site/.prettiercache
- key: cache-lint-${{ hashFiles('package-lock.json') }}-${{ hashFiles('apps/site/.eslintmdcache') }}
diff --git a/.github/workflows/translations-pr-lint.yml b/.github/workflows/translations-pr-lint.yml
new file mode 100644
index 0000000000000..0aa2761aeecad
--- /dev/null
+++ b/.github/workflows/translations-pr-lint.yml
@@ -0,0 +1,57 @@
+# This Workflow is used to comment on PRs that have changes that touch Translated Files
+# and then comments on their PRs mentioning that they should not do so
+
+name: Incoming Translation Checks
+
+on:
+ # run when someone tries to manually change localized content
+ pull_request_target:
+ branches:
+ - main
+ paths:
+ - 'apps/site/pages/**/*.md'
+ - 'apps/site/pages/**/*.mdx'
+ - '!apps/site/pages/en/**/*.md'
+ - '!apps/site/pages/en/**/*.mdx'
+ - 'packages/i18n/locales/*.json'
+ - '!packages/i18n/locales/en.json'
+
+# Cancel any runs on the same branch
+concurrency:
+ group: ${{ github.workflow }}-${{ github.ref }}
+ cancel-in-progress: true
+
+permissions:
+ actions: read
+
+jobs:
+ comment_on_translation_pr:
+ # This comment should always be posted on forks, or from internal PRs not originating from Crowdin (which are direct branches)
+ if: |
+ (github.event.pull_request.head.repo.full_name != 'nodejs/nodejs.org') ||
+ (github.event.pull_request.head.repo.full_name == 'nodejs/nodejs.org' && github.event.pull_request.head.ref != 'chore/crowdin')
+
+ name: Comment on Translation PR
+ runs-on: ubuntu-latest
+
+ permissions:
+ # This permission is required by `thollander/actions-comment-pull-request`
+ pull-requests: write
+
+ steps:
+ - name: Harden Runner
+ uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2
+ with:
+ egress-policy: audit
+
+ - uses: thollander/actions-comment-pull-request@e2c37e53a7d2227b61585343765f73a9ca57eda9 # v3.0.0
+ with:
+ message: |
+ > [!NOTE]\
+ > Your Pull Request seems to be updating **Translations** of the Node.js Website.
+ >
+ > Whilst we appreciate your intent; Any Translation update should be done through our [Crowdin Project](https://crowdin.com/project/nodejs-web).
+ > We recommend giving a read on our [Translation Guidelines](https://github.com/nodejs/nodejs.org/blob/main/TRANSLATION.md).
+ >
+ > Thank you!
+ comment-tag: use_crowdin
diff --git a/.github/workflows/translations-sync.yml b/.github/workflows/translations-sync.yml
index 6b957a2d1b4d9..5687edb131ca3 100644
--- a/.github/workflows/translations-sync.yml
+++ b/.github/workflows/translations-sync.yml
@@ -1,6 +1,8 @@
# This action automates the synchronization of our crowdin translations, so that a human does not need to kick it off from the crowdin UI
+# It also formats incoming content because it is often not adherent to our rules post-translation.
+
# See translations-upload.yml for automation to upload our source content
-# See translations-pr-lint-and-format.yml for quality control we conduct on ingress of new translations.
+# See translations-pr-lint.yml for quality control we conduct on ingress of new translations.
name: Crowdin Download
on:
@@ -28,11 +30,9 @@ jobs:
with:
egress-policy: audit
- - name: Checkout
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
-
# see all the options at https://github.com/crowdin/github-action
- - name: crowdin action
+ - name: Crowdin PR
+ id: crowdin
uses: crowdin/github-action@2d540f18b0a416b1fbf2ee5be35841bd380fc1da # v2.3.0
with:
# do not upload anything - this is a one-way operation download
@@ -44,7 +44,6 @@ jobs:
create_pull_request: true
pull_request_title: '[automated]: crowdin sync'
pull_request_body: 'New Crowdin translations from the [Node.js Crowdin project](https://crowdin.com/project/nodejs-web)'
- pull_request_labels: github_actions:pull-request
commit_message: 'chore: synced translations from crowdin'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -52,3 +51,74 @@ jobs:
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
# Created from https://crowdin.com/settings#api-key logged in using nodejs-crowdin-bot
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
+
+ format_crowdin_pull_request:
+ runs-on: ubuntu-latest
+
+ permissions:
+ # This permission is required by `stefanzweifel/git-auto-commit-action`
+ contents: write
+
+ steps:
+ - name: Harden Runner
+ uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2
+ with:
+ egress-policy: audit
+
+ - name: Git Checkout
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+ with:
+ # Use the number from the output of crowdin/github-action
+ ref: refs/pull/${{ steps.crowdin.outputs.pull_request_number }}/head
+
+ - name: Restore Lint Cache
+ uses: actions/cache/restore@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2
+ with:
+ path: |
+ apps/site/.eslintmdcache
+ apps/site/.prettiercache
+ # We want to restore Turborepo Cache and ESlint and Prettier Cache
+ # The ESLint and Prettier cache's are useful to reduce the overall runtime of ESLint and Prettier
+ # as they will only run on files that have changed since the last cached run
+ # this might of course lead to certain files not being checked against the linter, but the chances
+ # of such situation from happening are very slim as the checksums of both files would need to match
+ key: cache-lint-${{ hashFiles('package-lock.json') }}-
+ restore-keys: |
+ cache-lint-${{ hashFiles('package-lock.json') }}-
+ cache-lint-
+
+ - name: Set up Node.js
+ uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
+ with:
+ # We want to ensure that the Node.js version running here respects our supported versions
+ node-version-file: '.nvmrc'
+ cache: 'npm'
+
+ - name: Install npm packages
+ # We want to avoid npm from running the Audit Step and Funding messages on a CI environment
+ # We also use `npm i` instead of `npm ci` so that the node_modules/.cache folder doesn't get deleted
+ run: npm i --no-audit --no-fund --ignore-scripts --userconfig=/dev/null
+
+ - name: Run `npx lint:md --fix`
+ # This runs a specific version of ESLint with only the Translation Pages Globbing
+ # This avoid that unrelated changes get linted/modified within this PR
+ run: npx eslint "apps/site/pages/**/*.md?(x)" --fix --cache --cache-strategy=metadata --cache-file=apps/site/.eslintmdcache --config=apps/site/eslint.config.js
+
+ - name: Run `npx prettier --write`
+ # This runs a specific version of Prettier with only the Translation Pages Globbing
+ # This avoid that unrelated changes get prettied/modified within this PR
+ run: npx prettier "apps/site/{pages,i18n}/**/*.{json,md,mdx}" --check --write --cache --cache-strategy=metadata --cache-location=apps/site/.prettiercache
+
+ - name: Push Changes back to Pull Request
+ uses: stefanzweifel/git-auto-commit-action@8621497c8c39c72f3e2a999a26b4ca1b5058a842 # v5.0.1
+ with:
+ commit_options: '--no-verify --signoff'
+ commit_message: 'chore: automated format of translated files'
+
+ - name: Save Lint Cache
+ uses: actions/cache/save@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2
+ with:
+ path: |
+ apps/site/.eslintmdcache
+ apps/site/.prettiercache
+ key: cache-lint-${{ hashFiles('package-lock.json') }}-${{ hashFiles('apps/site/.eslintmdcache') }}
diff --git a/.github/workflows/translations-upload.yml b/.github/workflows/translations-upload.yml
index 5344797cb67d8..a70694469372c 100644
--- a/.github/workflows/translations-upload.yml
+++ b/.github/workflows/translations-upload.yml
@@ -1,6 +1,6 @@
# This action automates the upload of our source content to crowdin.
# See translations-sync.yml for the automation to download new translations on a schedule
-# See translations-pr-lint-and-format.yml for quality control we conduct on ingress of new translations.
+# See translations-pr-lint.yml for quality control we conduct on ingress of new translations.
name: Crowdin Upload
on:
From b3374cacb4143c1a1857ca71901abbbcdf83c64d Mon Sep 17 00:00:00 2001
From: Brian Muenzenmeyer
Date: Sat, 7 Dec 2024 06:09:19 -0600
Subject: [PATCH 45/65] hotfix: crowdin action needs the config
---
.github/workflows/translations-sync.yml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/.github/workflows/translations-sync.yml b/.github/workflows/translations-sync.yml
index 5687edb131ca3..1d72fcef15a32 100644
--- a/.github/workflows/translations-sync.yml
+++ b/.github/workflows/translations-sync.yml
@@ -30,6 +30,9 @@ jobs:
with:
egress-policy: audit
+ - name: Checkout
+ uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+
# see all the options at https://github.com/crowdin/github-action
- name: Crowdin PR
id: crowdin
From d16f7e1c0f48bfd4d702d8c5342bab9ca1752f8d Mon Sep 17 00:00:00 2001
From: Brian Muenzenmeyer
Date: Sat, 7 Dec 2024 06:23:11 -0600
Subject: [PATCH 46/65] hotfix: wat on completion of first job
---
.github/workflows/translations-sync.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/translations-sync.yml b/.github/workflows/translations-sync.yml
index 1d72fcef15a32..53e83dd1c98a9 100644
--- a/.github/workflows/translations-sync.yml
+++ b/.github/workflows/translations-sync.yml
@@ -35,7 +35,6 @@ jobs:
# see all the options at https://github.com/crowdin/github-action
- name: Crowdin PR
- id: crowdin
uses: crowdin/github-action@2d540f18b0a416b1fbf2ee5be35841bd380fc1da # v2.3.0
with:
# do not upload anything - this is a one-way operation download
@@ -56,6 +55,7 @@ jobs:
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
format_crowdin_pull_request:
+ needs: synchronize-with-crowdin
runs-on: ubuntu-latest
permissions:
@@ -72,7 +72,7 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
# Use the number from the output of crowdin/github-action
- ref: refs/pull/${{ steps.crowdin.outputs.pull_request_number }}/head
+ ref: refs/pull/${{ steps.synchronize-with-crowdin.outputs.pull_request_number }}/head
- name: Restore Lint Cache
uses: actions/cache/restore@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2
From 1a89ed8c1af2c5370356d9b1ce9d3c7afb096361 Mon Sep 17 00:00:00 2001
From: Brian Muenzenmeyer
Date: Sat, 7 Dec 2024 08:07:55 -0600
Subject: [PATCH 47/65] hotfix: assign job output
---
.github/workflows/translations-sync.yml | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/.github/workflows/translations-sync.yml b/.github/workflows/translations-sync.yml
index 53e83dd1c98a9..854abe6796aa8 100644
--- a/.github/workflows/translations-sync.yml
+++ b/.github/workflows/translations-sync.yml
@@ -23,6 +23,8 @@ permissions:
jobs:
synchronize-with-crowdin:
runs-on: ubuntu-latest
+ outputs:
+ pull_request_number: ${{ steps.crowdin_pr.outputs.pull_request_number }}
steps:
- name: Harden Runner
@@ -36,6 +38,7 @@ jobs:
# see all the options at https://github.com/crowdin/github-action
- name: Crowdin PR
uses: crowdin/github-action@2d540f18b0a416b1fbf2ee5be35841bd380fc1da # v2.3.0
+ id: crowdin_pr
with:
# do not upload anything - this is a one-way operation download
upload_sources: false
@@ -72,7 +75,7 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
# Use the number from the output of crowdin/github-action
- ref: refs/pull/${{ steps.synchronize-with-crowdin.outputs.pull_request_number }}/head
+ ref: refs/pull/${{ jobs.synchronize-with-crowdin.outputs.pull_request_number }}/head
- name: Restore Lint Cache
uses: actions/cache/restore@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2
From d67de5663096ebfccbf15829ee2e8e531208d6e6 Mon Sep 17 00:00:00 2001
From: Brian Muenzenmeyer
Date: Sat, 7 Dec 2024 08:10:31 -0600
Subject: [PATCH 48/65] hotfix: reference job correctly
---
.github/workflows/translations-sync.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/translations-sync.yml b/.github/workflows/translations-sync.yml
index 854abe6796aa8..78c8557dd0a1e 100644
--- a/.github/workflows/translations-sync.yml
+++ b/.github/workflows/translations-sync.yml
@@ -75,7 +75,7 @@ jobs:
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
# Use the number from the output of crowdin/github-action
- ref: refs/pull/${{ jobs.synchronize-with-crowdin.outputs.pull_request_number }}/head
+ ref: refs/pull/${{ needs.synchronize-with-crowdin.outputs.pull_request_number }}/head
- name: Restore Lint Cache
uses: actions/cache/restore@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2
From d58ae810846698e0b4e5c7898c8791abf27e6441 Mon Sep 17 00:00:00 2001
From: Brian Muenzenmeyer
Date: Sat, 7 Dec 2024 08:32:00 -0600
Subject: [PATCH 49/65] hotfix: specify branch name
---
.github/workflows/translations-sync.yml | 1 +
1 file changed, 1 insertion(+)
diff --git a/.github/workflows/translations-sync.yml b/.github/workflows/translations-sync.yml
index 78c8557dd0a1e..973ee4deb7ef4 100644
--- a/.github/workflows/translations-sync.yml
+++ b/.github/workflows/translations-sync.yml
@@ -120,6 +120,7 @@ jobs:
with:
commit_options: '--no-verify --signoff'
commit_message: 'chore: automated format of translated files'
+ branch: 'chore/crowdin'
- name: Save Lint Cache
uses: actions/cache/save@6849a6489940f00c2f30c0fb92c6274307ccb58a # v4.1.2
From e3ba05d8640049cb8b59114ddbd30cc1a0c0324a Mon Sep 17 00:00:00 2001
From: Brian Muenzenmeyer
Date: Sun, 8 Dec 2024 19:10:37 -0600
Subject: [PATCH 50/65] chore: remove vestigial commitizen references (#7317)
---
CONTRIBUTING.md | 2 +-
README.md | 3 ---
package-lock.json | 1 -
package.json | 1 -
4 files changed, 1 insertion(+), 6 deletions(-)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 2a820032a6715..e1f9a00d89e7b 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -115,7 +115,7 @@ for getting things done and landing your contribution.
```bash
cd ~/nodejs.org
git add .
- git commit #let commitizen handle the commit
+ git commit -m "describe your changes"
git push -u origin name-of-your-branch
```
diff --git a/README.md b/README.md
index 9ae2467fb6fd2..154ef3a32e853 100644
--- a/README.md
+++ b/README.md
@@ -30,9 +30,6 @@
-
-
-
diff --git a/package-lock.json b/package-lock.json
index eb711fc733a15..ee3f6dd225905 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -19,7 +19,6 @@
"@eslint/js": "~9.16.0",
"@types/eslint__js": "8.42.3",
"@types/node": "22.10.1",
- "commitizen": "4.3.1",
"cz-conventional-changelog": "3.3.0",
"eslint": "~9.16.0",
"eslint-plugin-import-x": "~4.4.3",
diff --git a/package.json b/package.json
index 44963a5567104..8491f970da2ae 100644
--- a/package.json
+++ b/package.json
@@ -43,7 +43,6 @@
"@eslint/js": "~9.16.0",
"@types/eslint__js": "8.42.3",
"@types/node": "22.10.1",
- "commitizen": "4.3.1",
"cz-conventional-changelog": "3.3.0",
"eslint": "~9.16.0",
"eslint-plugin-import-x": "~4.4.3",
From 8bc50b4784bf434f23aa76034021bb4d83fcfd67 Mon Sep 17 00:00:00 2001
From: Jordan Harband
Date: Mon, 9 Dec 2024 05:01:10 -0800
Subject: [PATCH 51/65] update hardcoded nvm version (#7323)
---
apps/site/util/getNodeDownloadSnippet.ts | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/apps/site/util/getNodeDownloadSnippet.ts b/apps/site/util/getNodeDownloadSnippet.ts
index b1874f6084c5b..de4109f6aa666 100644
--- a/apps/site/util/getNodeDownloadSnippet.ts
+++ b/apps/site/util/getNodeDownloadSnippet.ts
@@ -39,7 +39,7 @@ export const getNodeDownloadSnippet = (
if (os === 'MAC' || os === 'LINUX') {
snippets.NVM = dedent`
# ${t('layouts.download.codeBox.installsNvm')}
- curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
+ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
# ${t('layouts.download.codeBox.downloadAndInstallNodejsRestartTerminal')}
nvm install ${release.major}
From a9de273836a585a02b123e19aae1502542134a1a Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Tue, 10 Dec 2024 08:29:45 -0600
Subject: [PATCH 52/65] [automated]: crowdin sync, enables korean (#7321)
* chore: synced translations from crowdin
* chore: automated format of translated files
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* enable korean
---------
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Crowdin Bot
Co-authored-by: bmuenzenmeyer
Co-authored-by: Brian Muenzenmeyer
---
apps/site/pages/fr/about/branding.mdx | 2 +-
.../site/pages/fr/about/previous-releases.mdx | 4 +
.../fr/download/package-manager/current.mdx | 4 +-
.../fr/download/package-manager/index.mdx | 4 +-
.../fr/download/prebuilt-binaries/current.mdx | 4 +-
.../fr/download/prebuilt-binaries/index.mdx | 4 +-
.../download/prebuilt-installer/current.mdx | 4 +-
.../fr/download/prebuilt-installer/index.mdx | 4 +-
.../pages/fr/download/source-code/current.mdx | 4 +-
.../pages/fr/download/source-code/index.mdx | 4 +-
apps/site/pages/fr/index.mdx | 247 +++++------
apps/site/pages/id/about/branding.mdx | 86 ++--
.../site/pages/id/about/get-involved/index.md | 25 +-
apps/site/pages/id/about/governance.md | 4 +-
apps/site/pages/id/about/index.mdx | 4 +-
.../site/pages/id/about/previous-releases.mdx | 6 +-
.../id/download/package-manager/current.mdx | 4 +-
.../id/download/package-manager/index.mdx | 4 +-
.../id/download/prebuilt-binaries/current.mdx | 4 +-
.../id/download/prebuilt-binaries/index.mdx | 4 +-
.../download/prebuilt-installer/current.mdx | 4 +-
.../id/download/prebuilt-installer/index.mdx | 6 +-
.../pages/id/download/source-code/current.mdx | 4 +-
.../pages/id/download/source-code/index.mdx | 4 +-
apps/site/pages/id/index.mdx | 249 +++++------
apps/site/pages/ko/about/branding.mdx | 84 ++++
.../ko/about/get-involved/collab-summit.md | 16 +
.../pages/ko/about/get-involved/events.mdx | 16 +
.../site/pages/ko/about/get-involved/index.md | 36 ++
apps/site/pages/ko/about/governance.md | 31 ++
apps/site/pages/ko/about/index.mdx | 63 +++
.../site/pages/ko/about/previous-releases.mdx | 25 ++
.../pages/ko/about/security-reporting.mdx | 64 +++
.../pages/ko/download/package-manager/all.md | 390 ++++++++++++++++++
.../ko/download/package-manager/current.mdx | 25 ++
.../ko/download/package-manager/index.mdx | 25 ++
.../ko/download/prebuilt-binaries/current.mdx | 24 ++
.../ko/download/prebuilt-binaries/index.mdx | 24 ++
.../download/prebuilt-installer/current.mdx | 26 ++
.../ko/download/prebuilt-installer/index.mdx | 26 ++
.../pages/ko/download/source-code/current.mdx | 25 ++
.../pages/ko/download/source-code/index.mdx | 5 +-
apps/site/pages/ko/index.mdx | 248 +++++------
.../site/pages/pt/about/previous-releases.mdx | 4 +
apps/site/pages/tr/about/governance.md | 4 +-
.../site/pages/tr/about/previous-releases.mdx | 4 +
apps/site/pages/uk/about/branding.mdx | 86 ++--
.../site/pages/uk/about/previous-releases.mdx | 4 +
.../uk/download/package-manager/current.mdx | 4 +-
.../uk/download/package-manager/index.mdx | 4 +-
.../uk/download/prebuilt-binaries/current.mdx | 6 +-
.../uk/download/prebuilt-binaries/index.mdx | 6 +-
.../download/prebuilt-installer/current.mdx | 6 +-
.../uk/download/prebuilt-installer/index.mdx | 6 +-
.../pages/uk/download/source-code/current.mdx | 4 +-
.../pages/uk/download/source-code/index.mdx | 4 +-
apps/site/pages/uk/index.mdx | 248 +++++------
packages/i18n/config.json | 2 +-
packages/i18n/locales/fr.json | 10 +-
packages/i18n/locales/id.json | 23 +-
packages/i18n/locales/ko.json | 327 +++++++++++++++
packages/i18n/locales/uk.json | 13 +-
62 files changed, 1955 insertions(+), 656 deletions(-)
create mode 100644 apps/site/pages/ko/about/branding.mdx
create mode 100644 apps/site/pages/ko/about/get-involved/collab-summit.md
create mode 100644 apps/site/pages/ko/about/get-involved/events.mdx
create mode 100644 apps/site/pages/ko/about/get-involved/index.md
create mode 100644 apps/site/pages/ko/about/governance.md
create mode 100644 apps/site/pages/ko/about/index.mdx
create mode 100644 apps/site/pages/ko/about/previous-releases.mdx
create mode 100644 apps/site/pages/ko/about/security-reporting.mdx
create mode 100644 apps/site/pages/ko/download/package-manager/all.md
create mode 100644 apps/site/pages/ko/download/package-manager/current.mdx
create mode 100644 apps/site/pages/ko/download/package-manager/index.mdx
create mode 100644 apps/site/pages/ko/download/prebuilt-binaries/current.mdx
create mode 100644 apps/site/pages/ko/download/prebuilt-binaries/index.mdx
create mode 100644 apps/site/pages/ko/download/prebuilt-installer/current.mdx
create mode 100644 apps/site/pages/ko/download/prebuilt-installer/index.mdx
create mode 100644 apps/site/pages/ko/download/source-code/current.mdx
create mode 100644 packages/i18n/locales/ko.json
diff --git a/apps/site/pages/fr/about/branding.mdx b/apps/site/pages/fr/about/branding.mdx
index 62f33e48f5250..bd7fe749280d8 100644
--- a/apps/site/pages/fr/about/branding.mdx
+++ b/apps/site/pages/fr/about/branding.mdx
@@ -9,7 +9,7 @@ Veuillez consulter la [politique en matière de marques](https://trademark-polic
## Mascotte de Node.js®
-Crédit à [@Ang_ngl on X](https://x.com/Ang_ngl) pour la conception et la contribution de la Tortue-fusée.
+Crédit à [Angela Angelini](https://www.linkedin.com/in/angeliningl/) pour la conception et la contribution de la tortue-fusée.
diff --git a/apps/site/pages/fr/download/package-manager/current.mdx b/apps/site/pages/fr/download/package-manager/current.mdx
index 69f1c75348f95..a7b2f9969b4f7 100644
--- a/apps/site/pages/fr/download/package-manager/current.mdx
+++ b/apps/site/pages/fr/download/package-manager/current.mdx
@@ -13,9 +13,9 @@ Installer Node.js sur
Node.js inclut .
-Lire le journal des modifications pour cette version
+Lire le journal des modifications pour cette version.
-Lire l'article de blog pour cette version
+Lire le journal des modifications pour cette version.
Apprenez à vérifier les SHASUMS signés
diff --git a/apps/site/pages/fr/download/package-manager/index.mdx b/apps/site/pages/fr/download/package-manager/index.mdx
index 69f1c75348f95..b9b4197b0960c 100644
--- a/apps/site/pages/fr/download/package-manager/index.mdx
+++ b/apps/site/pages/fr/download/package-manager/index.mdx
@@ -13,9 +13,9 @@ Installer Node.js sur
Node.js inclut .
-Lire le journal des modifications pour cette version
+Lire le journal des modifications pour cette version
-Lire l'article de blog pour cette version
+Lire le journal des modifications pour cette version
Apprenez à vérifier les SHASUMS signés
diff --git a/apps/site/pages/fr/download/prebuilt-binaries/current.mdx b/apps/site/pages/fr/download/prebuilt-binaries/current.mdx
index 8bb21316ba7a3..dcdad7cc77e90 100644
--- a/apps/site/pages/fr/download/prebuilt-binaries/current.mdx
+++ b/apps/site/pages/fr/download/prebuilt-binaries/current.mdx
@@ -13,9 +13,9 @@ Je veux la version de Node.js pour
Node.js inclut .
-Lire le journal des modifications pour cette version
+Lire le journal des modifications pour cette version
-Lire l'article de blog pour cette version
+Lire le journal des modifications pour cette version
Apprenez à vérifier les SHASUMS signés
diff --git a/apps/site/pages/fr/download/prebuilt-binaries/index.mdx b/apps/site/pages/fr/download/prebuilt-binaries/index.mdx
index f6593de1d83be..4bed42857cf5d 100644
--- a/apps/site/pages/fr/download/prebuilt-binaries/index.mdx
+++ b/apps/site/pages/fr/download/prebuilt-binaries/index.mdx
@@ -13,9 +13,9 @@ Je veux la version de Node.js pour
Node.js inclut .
-Lire le journal des modifications pour cette version.
+Lire le journal des modifications pour cette version.
-Lire l'article de blog pour cette version.
+Lire le journal des modifications pour cette version.
Apprenez à vérifier les SHASUMS signés.
diff --git a/apps/site/pages/fr/download/prebuilt-installer/current.mdx b/apps/site/pages/fr/download/prebuilt-installer/current.mdx
index 451440f6adc96..1a51285899b70 100644
--- a/apps/site/pages/fr/download/prebuilt-installer/current.mdx
+++ b/apps/site/pages/fr/download/prebuilt-installer/current.mdx
@@ -13,9 +13,9 @@ Je veux la version de Node.js pour
Node.js inclut .
-Lire le journal des modifications pour cette version
+Lire le journal des modifications pour cette version
-Lire l'article de blog pour cette version
+Lire le journal des modifications pour cette version
Apprenez à vérifier les SHASUMS signés
diff --git a/apps/site/pages/fr/download/prebuilt-installer/index.mdx b/apps/site/pages/fr/download/prebuilt-installer/index.mdx
index d351d99bb5e24..b28ec06f8e16a 100644
--- a/apps/site/pages/fr/download/prebuilt-installer/index.mdx
+++ b/apps/site/pages/fr/download/prebuilt-installer/index.mdx
@@ -13,9 +13,9 @@ Je veux la version de Node.js pour
Node.js inclut .
-Lire le journal des modifications pour cette version
+Lire le journal des modifications pour cette version.
-Lire l'article de blog pour cette version
+Lire le journal des modifications pour cette version.
Apprenez à vérifier les SHASUMS signés
diff --git a/apps/site/pages/fr/download/source-code/current.mdx b/apps/site/pages/fr/download/source-code/current.mdx
index f7a2f1af75833..d4fbc07f30be7 100644
--- a/apps/site/pages/fr/download/source-code/current.mdx
+++ b/apps/site/pages/fr/download/source-code/current.mdx
@@ -13,9 +13,9 @@ Je veux la version du code source de Node.js.
Node.js inclut .
-Lire le journal des modifications pour cette version
+Lire le journal des modifications pour cette version.
-Lire l'article de blog pour cette version
+Lire le journal des modifications pour cette version.
Apprenez à vérifier les SHASUMS signés
diff --git a/apps/site/pages/fr/download/source-code/index.mdx b/apps/site/pages/fr/download/source-code/index.mdx
index f7a2f1af75833..d4fbc07f30be7 100644
--- a/apps/site/pages/fr/download/source-code/index.mdx
+++ b/apps/site/pages/fr/download/source-code/index.mdx
@@ -13,9 +13,9 @@ Je veux la version du code source de Node.js.
Node.js inclut .
-Lire le journal des modifications pour cette version
+Lire le journal des modifications pour cette version.
-Lire l'article de blog pour cette version
+Lire le journal des modifications pour cette version.
Apprenez à vérifier les SHASUMS signés
diff --git a/apps/site/pages/fr/index.mdx b/apps/site/pages/fr/index.mdx
index 960d8f0e583d7..2cd1371107d46 100644
--- a/apps/site/pages/fr/index.mdx
+++ b/apps/site/pages/fr/index.mdx
@@ -4,133 +4,134 @@ layout: home
---
-
-
-
-
Exécuter du JavaScript partout
-
- Node.js® est un environnement d'exécution JavaScript gratuit,
- open-source et multiplateforme qui permet aux développeurs de créer des serveurs,
- des applications web et des applications de gestion de contenu. qui permet
- aux développeurs de créer des serveurs, des applications web, des outils en
- ligne de commande et des scripts.
-
-
-
-
-
- {({ release }) => (
- <>
- Télécharger Node.js (LTS)
-
- Télécharger Node.js {release.versionWithPrefix}
- 1 avec un support à long terme.
- Node.js peut également être installé via gestionnaires de paquets.
-
- >
- )}
-
+
+
+
+
Exécuter du JavaScript partout
+
+Node.js® est un environnement d'exécution JavaScript gratuit, open-source et multiplateforme qui permet aux développeurs de créer des serveurs, des applications web, des outils en ligne de commande et des scripts.
+
+
-
- {({ release }) => (
+
+
+ {({ release }) => (
+ <>
+ Télécharger Node.js (LTS)
- Vous voulez de nouvelles fonctionnalités plus tôt ?
- Obtenez Node.js {release.versionWithPrefix}
- 1 à la place.
+ Télécharger Node.js {release.versionWithPrefix}
+ 1 avec un support à long terme.
+ Node.js peut également être installé via gestionnaires de paquets.
- )}
-
-
-
+ >
+ )}
+
+
+
+ {({ release }) => (
+
+ Vous voulez de nouvelles fonctionnalités plus tôt ?
+ Obtenez Node.js {release.versionWithPrefix}
+ 1 à la place.
+
+ )}
+
+
-
- ```js displayName="Create an HTTP Server"
- // server.mjs
- import { createServer } from 'node:http';
-
- const server = createServer((req, res) => {
- res.writeHead(200, { 'Content-Type': 'text/plain' });
- res.end('Hello World!\n');
- });
-
- // starts a simple http server locally on port 3000
- server.listen(3000, '127.0.0.1', () => {
- console.log('Listening on 127.0.0.1:3000');
- });
-
- // run with `node server.mjs`
- ```
-
- ```js displayName="Write Tests"
- // tests.mjs
- import assert from 'node:assert';
- import test from 'node:test';
-
- test('that 1 is equal 1', () => {
- assert.strictEqual(1, 1);
- });
-
- test('that throws as 1 is not equal 2', () => {
- // throws an exception because 1 != 2
- assert.strictEqual(1, 2);
- });
-
- // run with `node tests.mjs`
- ```
-
- ```js displayName="Read and Hash a File"
- // crypto.mjs
- import { createHash } from 'node:crypto';
- import { readFile } from 'node:fs/promises';
-
- const hasher = createHash('sha1');
-
- hasher.setEncoding('hex');
- // ensure you have a `package.json` file for this test!
- hasher.write(await readFile('package.json'));
- hasher.end();
-
- const fileHash = hasher.read();
-
- // run with `node crypto.mjs`
- ```
-
- ```js displayName="Streams Pipeline"
- // streams.mjs
- import { pipeline } from 'node:stream/promises';
- import { createReadStream, createWriteStream } from 'node:fs';
- import { createGzip } from 'node:zlib';
-
- // ensure you have a `package.json` file for this test!
- await pipeline
- (
- createReadStream('package.json'),
- createGzip(),
- createWriteStream('package.json.gz')
- );
-
- // run with `node streams.mjs`
- ```
-
- ```js displayName="Work with Threads"
- // threads.mjs
- import { Worker, isMainThread,
- workerData, parentPort } from 'node:worker_threads';
-
- if (isMainThread) {
- const data = 'some data';
- const worker = new Worker(import.meta.filename, { workerData: data });
- worker.on('message', msg => console.log('Reply from Thread:', msg));
- } else {
- const source = workerData;
- parentPort.postMessage(btoa(source.toUpperCase()));
- }
-
- // run with `node threads.mjs`
- ```
-
-
- Apprenez-en plus sur ce que Node.js est capable d'offrir avec notre [Matériel d'apprentissage](/learn).
+
+ ```js displayName="Create an HTTP Server"
+ // server.mjs
+ import { createServer } from 'node:http';
+
+const server = createServer((req, res) => {
+res.writeHead(200, { 'Content-Type': 'text/plain' });
+res.end('Hello World!\n');
+});
+
+// starts a simple http server locally on port 3000
+server.listen(3000, '127.0.0.1', () => {
+console.log('Listening on 127.0.0.1:3000');
+});
+
+// run with `node server.mjs`
+
+````
+
+```js displayName="Write Tests"
+// tests.mjs
+import assert from 'node:assert';
+import test from 'node:test';
+
+test('that 1 is equal 1', () => {
+ assert.strictEqual(1, 1);
+});
+
+test('that throws as 1 is not equal 2', () => {
+ // throws an exception because 1 != 2
+ assert.strictEqual(1, 2);
+});
+
+// run with `node tests.mjs`
+````
+
+```js displayName="Read and Hash a File"
+// crypto.mjs
+import { createHash } from 'node:crypto';
+import { readFile } from 'node:fs/promises';
+
+const hasher = createHash('sha1');
+
+hasher.setEncoding('hex');
+// ensure you have a `package.json` file for this test!
+hasher.write(await readFile('package.json'));
+hasher.end();
+
+const fileHash = hasher.read();
+
+// run with `node crypto.mjs`
+```
+
+```js displayName="Streams Pipeline"
+// streams.mjs
+import { pipeline } from 'node:stream/promises';
+import { createReadStream, createWriteStream } from 'node:fs';
+import { createGzip } from 'node:zlib';
+
+// ensure you have a `package.json` file for this test!
+await pipeline(
+ createReadStream('package.json'),
+ createGzip(),
+ createWriteStream('package.json.gz')
+);
+
+// run with `node streams.mjs`
+```
+
+```js displayName="Work with Threads"
+// threads.mjs
+import {
+ Worker,
+ isMainThread,
+ workerData,
+ parentPort,
+} from 'node:worker_threads';
+
+if (isMainThread) {
+ const data = 'some data';
+ const worker = new Worker(import.meta.filename, { workerData: data });
+ worker.on('message', msg => console.log('Reply from Thread:', msg));
+} else {
+ const source = workerData;
+ parentPort.postMessage(btoa(source.toUpperCase()));
+}
+
+// run with `node threads.mjs`
+```
+
+
+
+Apprenez-en plus sur ce que Node.js est capable d'offrir avec notre [Matériel d'apprentissage](/learn).
+
diff --git a/apps/site/pages/id/about/branding.mdx b/apps/site/pages/id/about/branding.mdx
index 609e46191e54e..503745304067a 100644
--- a/apps/site/pages/id/about/branding.mdx
+++ b/apps/site/pages/id/about/branding.mdx
@@ -9,6 +9,8 @@ Harap tinjau [kebijakan merek dagang](https://trademark-policy.openjsf.org/) unt
## Maskot Node.js
+Penghargaan kepada [Angela Angelini](https://www.linkedin.com/in/angeliningl/) atas desain dan kontribusinya terhadap Rocket Turtle.
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
### Logo Bertumpuk Node.js®
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
### JS Icons
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/site/pages/id/about/get-involved/index.md b/apps/site/pages/id/about/get-involved/index.md
index 09a5a5bfd31b0..be69c2227cfd5 100644
--- a/apps/site/pages/id/about/get-involved/index.md
+++ b/apps/site/pages/id/about/get-involved/index.md
@@ -5,22 +5,33 @@ layout: about
# Mari Berpartisipasi
+Jika kamu tertarik untuk terlibat dengan komunitas Node.js, ada banyak cara untuk melakukannya. Proyek Node.js adalah komunitas yang besar dan beragam, dan ada banyak cara untuk berkontribusi, selain hanya menulis kode.
+
## Diskusi Komunitas
-- [Daftar masalah GitHub](https://github.com/nodejs/node/issues) adalah tempat untuk berdiskusi tentang fitur inti Node.js.
-- Untuk obrolan waktu nyata tentang pengembangan Node.js, gunakan salah satu platform di bawah ini
- - Untuk IRC, buka `irc.libera.chat` di saluran `#node.js` dengan [klien IRC](https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients) atau sambungkan di browser web Anda ke saluran menggunakan [klien web](https://kiwiirc.com/nextclient/)
- - Untuk Slack, ada dua opsi:
- - [OpenJSF Slack](https://slack-invite.openjsf.org/) adalah Slack yang dijalankan oleh Foundation dengan beberapa saluran Node.js (saluran yang diawali dengan `#nodejs-` terkait dengan proyek).
- - [Node Slackers](https://www.nodeslackers.com/) is a Node.js-focused Slack community.
+- [Daftar masalah GitHub](https://github.com/nodejs/node/issues) adalah tempat untuk mendiskusikan fitur inti Node.js dan jika kamu memiliki pertanyaan tentang Node.js, kamu dapat menggunakan [diskusi GitHub](https://github.com/orgs/nodejs/discussions).
+- Repositori [`nodejs/help`](https://github.com/nodejs/help/issues) adalah tempat untuk mengajukan pertanyaan tentang Node.js.
- Akun Twitter resmi Node.js adalah [nodejs](https://twitter.com/nodejs).
- [Kalender proyek Node.js](https://nodejs.org/calendar) dengan semua rapat tim publik.
-## Belajar
+## Materi Pembelajaran
+
+Jika kamu ingin mempelajari lebih lanjut tentang Node.js, ada banyak sumber daya yang tersedia untuk mu.
- [Bagian Pembelajaran Resmi](https://nodejs.org/id/learn/) dari situs web Node.js.
- [Dokumentasi referensi API resmi](https://nodejs.org/api/).
- [NodeSchool.io](https://nodeschool.io/) akan mengajari Anda konsep Node.js melalui game baris perintah interaktif.
- [Tag Stack Overflow Node.js](https://stackoverflow.com/questions/tagged/node.js) mengumpulkan informasi baru setiap hari.
- [Tag Node.js Komunitas DEV](https://dev.to/t/node) adalah tempat untuk berbagi proyek, artikel, dan tutorial Node.js serta memulai diskusi dan meminta masukan terkait Node.js topik. Pengembang dari semua tingkat keahlian dipersilakan untuk mengambil bagian.
+- [Komunitas Reddit Node.js](https://www.reddit.com/r/node) adalah tempat untuk berbagi proyek, artikel, dan tutorial Node.js serta memulai diskusi dan meminta umpan balik tentang topik terkait Node.js. Pengembang dari semua tingkat keterampilan dipersilakan untuk ikut serta.
+
+## Area Diskusi Tidak Resmi
+
+Jika kamu mencari tempat yang lebih informal untuk membahas Node.js, ada beberapa area diskusi tidak resmi.
+Harap perhatikan bahwa area ini tidak didukung secara resmi oleh proyek Node.js. Patuhi juga kode etik/aturan masing-masing.
+
+- [Node Slackers](https://www.nodeslackers.com/) is a Node.js-focused Slack community.
+- [OpenJSF Slack](https://slack-invite.openjsf.org/) adalah ruang kerja Slack untuk OpenJS Foundation. Ada beberapa saluran yang terkait dengan Node.js. _(saluran yang diawali dengan `#nodejs-` terkait dengan proyek)_
- [Nodeiflux](https://discordapp.com/invite/vUsrbjd) adalah komunitas ramah pengembang backend Node.js yang saling mendukung di Discord.
+- [Komunitas ES](https://discord.gg/zJsuc6vvhn) adalah komunitas Discord untuk pengembang JavaScript berbahasa Prancis.
+- Untuk IRC, buka `irc.libera.chat` di saluran `#node.js` dengan [klien IRC](https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients) atau sambungkan di browser web Anda ke saluran menggunakan [klien web](https://kiwiirc.com/nextclient/).
diff --git a/apps/site/pages/id/about/governance.md b/apps/site/pages/id/about/governance.md
index fdfd7b99efd2e..ac09ed445e313 100644
--- a/apps/site/pages/id/about/governance.md
+++ b/apps/site/pages/id/about/governance.md
@@ -7,7 +7,7 @@ layout: about
## Proses Pencarian Kesepakatan
-Proyek Node.js mengikuti model pengambilan keputusan [Pencarian Konsensus][consensus seeking].
+Proyek Node.js mengikuti model pengambilan keputusan [Pencarian Konsensus] [].
## Kolaborator
@@ -22,7 +22,7 @@ Panduan untuk Kolaborator disimpan di [collaborator-guide.md][].
## Komite Pengarah Teknis
-Proyek ini diatur oleh [Komite Pengarah Teknis][technical steering committee (tsc)] dalam bahasa inggris Technical Steering Committee (TSC) yang bertanggung jawab atas panduan tingkat tinggi proyek. TSC adalah bagian dari Kolaborator aktif yang dinominasikan oleh anggota TSC lain yang sudah ada.
+Proyek ini diatur oleh [Komite Pengarah Teknis][] dalam bahasa inggris Technical Steering Committee (TSC) yang bertanggung jawab atas panduan tingkat tinggi proyek. TSC adalah bagian dari Kolaborator aktif yang dinominasikan oleh anggota TSC lain yang sudah ada.
[consensus seeking]: https://id.wikipedia.org/wiki/Musyawarah
[readme.md]: https://github.com/nodejs/node/blob/main/README.md#current-project-team-members
diff --git a/apps/site/pages/id/about/index.mdx b/apps/site/pages/id/about/index.mdx
index b420da357524f..bb2d0e29b91ee 100644
--- a/apps/site/pages/id/about/index.mdx
+++ b/apps/site/pages/id/about/index.mdx
@@ -56,7 +56,7 @@ Jika ada yang belum familiar dengan bahasa ini, ada artikel lengkap tentang [Blo
---
-Node.js memiliki desain yang mirip dengan, dan dipengaruhi oleh, sistem seperti [Event Machine][] Ruby dan [Twisted][] Python. Node.js membawa model acara sedikit lebih jauh. Ini menyajikan loop peristiwa sebagai konstruksi runtime, bukan sebagai perpustakaan. Di sistem lain, selalu ada panggilan pemblokiran untuk memulai perulangan peristiwa. Biasanya, perilaku ditentukan melalui callback di awal skrip, dan di akhir skrip, server dimulai melalui panggilan pemblokiran seperti `EventMachine::run()`. Di Node.js, tidak ada panggilan start-the-event-loop. Node.js cukup memasuki loop acara setelah menjalankan skrip input. Node.js keluar dari loop peristiwa ketika tidak ada lagi callback yang harus dilakukan. Perilaku ini seperti JavaScript browser — loop peristiwa disembunyikan dari pengguna.
+Node.js memiliki desain yang mirip dengan, dan dipengaruhi oleh, sistem seperti [Event Machine] \[] Ruby dan \[Twisted] \[] Python. Node.js membawa model acara sedikit lebih jauh. Ini menyajikan loop peristiwa sebagai konstruksi runtime, bukan sebagai perpustakaan. Di sistem lain, selalu ada panggilan pemblokiran untuk memulai perulangan peristiwa. Biasanya, perilaku ditentukan melalui callback di awal skrip, dan di akhir skrip, server dimulai melalui panggilan pemblokiran seperti `EventMachine::run()`. Di Node.js, tidak ada panggilan start-the-event-loop. Node.js cukup memasuki loop acara setelah menjalankan skrip input. Node.js keluar dari loop peristiwa ketika tidak ada lagi callback yang harus dilakukan. Perilaku ini seperti JavaScript browser — loop peristiwa disembunyikan dari pengguna.
HTTP adalah warga negara kelas satu di Node.js, dirancang dengan streaming dan rendah
latensi dalam pikiran. Ini membuat Node.js sangat cocok untuk fondasi web
@@ -68,4 +68,4 @@ Node.js dirancang tanpa thread bukan berarti Anda tidak dapat memanfaatkan banya
[`child_process.fork()`]: https://nodejs.org/api/child_process.html
[`cluster`]: https://nodejs.org/api/cluster.html
[event machine]: https://github.com/eventmachine/eventmachine
-[twisted]: https://twisted.org/
+[berpilin]: https://twisted.org/
diff --git a/apps/site/pages/id/about/previous-releases.mdx b/apps/site/pages/id/about/previous-releases.mdx
index cc9e88039f4fd..8c02cc200446e 100644
--- a/apps/site/pages/id/about/previous-releases.mdx
+++ b/apps/site/pages/id/about/previous-releases.mdx
@@ -9,10 +9,14 @@ Versi Node.js utama memasuki status rilis saat ini selama enam bulan, yang membe
## Jadwal rilis
-
+
Detail lengkap mengenai jadwal rilis Node.js tersedia [di GitHub](https://github.com/nodejs/release#release-schedule).
+### Dukungan Komersial
+
+Dukungan komersial untuk versi yang melewati fase Pemeliharaan tersedia melalui mitra Program Keberlanjutan Ekosistem OpenJS kami [HeroDevs](https://herodevs.com/).
+
## Mencari rilis terbaru dari cabang versi?
diff --git a/apps/site/pages/id/download/package-manager/current.mdx b/apps/site/pages/id/download/package-manager/current.mdx
index ee5127dbddfe6..34202cba92cd1 100644
--- a/apps/site/pages/id/download/package-manager/current.mdx
+++ b/apps/site/pages/id/download/package-manager/current.mdx
@@ -13,9 +13,9 @@ Instal Node.js di
Node.js disertakan .
-Baca log perubahan untuk versi ini
+Baca changelog untuk versi ini.
-Baca pos artikel untuk versi ini
+Baca postingan blog untuk versi ini.
Pelajari cara memverifikasi SHASUMS yang ditandatangani
diff --git a/apps/site/pages/id/download/package-manager/index.mdx b/apps/site/pages/id/download/package-manager/index.mdx
index ee5127dbddfe6..0e8e32f0ae34e 100644
--- a/apps/site/pages/id/download/package-manager/index.mdx
+++ b/apps/site/pages/id/download/package-manager/index.mdx
@@ -13,9 +13,9 @@ Instal Node.js di
Node.js disertakan .
-Baca log perubahan untuk versi ini
+Baca changelog untuk versi ini
-Baca pos artikel untuk versi ini
+Baca postingan blog untuk versi ini
Pelajari cara memverifikasi SHASUMS yang ditandatangani
diff --git a/apps/site/pages/id/download/prebuilt-binaries/current.mdx b/apps/site/pages/id/download/prebuilt-binaries/current.mdx
index 108e566022a22..f9063133c81d7 100644
--- a/apps/site/pages/id/download/prebuilt-binaries/current.mdx
+++ b/apps/site/pages/id/download/prebuilt-binaries/current.mdx
@@ -13,9 +13,9 @@ Saya ingin versi Node.js untuk
Node.js disertakan .
-Baca log perubahan untuk versi ini
+Baca changelog untuk versi ini
-Baca pos artikel untuk versi ini
+Baca postingan blog untuk versi ini
Pelajari cara memverifikasi SHASUMS yang ditandatangani
diff --git a/apps/site/pages/id/download/prebuilt-binaries/index.mdx b/apps/site/pages/id/download/prebuilt-binaries/index.mdx
index 84edff3032a19..a3620eb74aa01 100644
--- a/apps/site/pages/id/download/prebuilt-binaries/index.mdx
+++ b/apps/site/pages/id/download/prebuilt-binaries/index.mdx
@@ -13,9 +13,9 @@ Saya ingin versi Node.js untuk
Node.js disertakan .
-Baca log perubahan untuk versi ini.
+Baca changelog untuk versi ini.
-Baca pos artikel untuk versi ini.
+Baca postingan blog untuk versi ini.
Pelajari cara memverifikasi SHASUMS yang ditandatangani.
diff --git a/apps/site/pages/id/download/prebuilt-installer/current.mdx b/apps/site/pages/id/download/prebuilt-installer/current.mdx
index de6d49485cbc6..eac81f06f0310 100644
--- a/apps/site/pages/id/download/prebuilt-installer/current.mdx
+++ b/apps/site/pages/id/download/prebuilt-installer/current.mdx
@@ -13,9 +13,9 @@ Saya ingin versi Node.js untuk
Node.js disertakan .
-Baca log perubahan untuk versi ini
+Baca changelog untuk versi ini
-Baca pos artikel untuk versi ini
+Baca postingan blog untuk versi ini
Pelajari cara memverifikasi SHASUMS yang ditandatangani
diff --git a/apps/site/pages/id/download/prebuilt-installer/index.mdx b/apps/site/pages/id/download/prebuilt-installer/index.mdx
index de6d49485cbc6..9eedb9693390e 100644
--- a/apps/site/pages/id/download/prebuilt-installer/index.mdx
+++ b/apps/site/pages/id/download/prebuilt-installer/index.mdx
@@ -13,14 +13,14 @@ Saya ingin versi Node.js untuk
Node.js disertakan .
-Baca log perubahan untuk versi ini
+Baca changelog untuk versi ini.
-Baca pos artikel untuk versi ini
+Baca postingan blog untuk versi ini.
Pelajari cara memverifikasi SHASUMS yang ditandatangani
Lihat semua opsi unduh Node.js yang tersedia
-Pelajari tentang Rilis Node.js
+Pelajari tentang Rilis Node.js
diff --git a/apps/site/pages/id/download/source-code/current.mdx b/apps/site/pages/id/download/source-code/current.mdx
index 0979f0795113f..823a8bc7e5478 100644
--- a/apps/site/pages/id/download/source-code/current.mdx
+++ b/apps/site/pages/id/download/source-code/current.mdx
@@ -13,9 +13,9 @@ Saya ingin versi kode sumber Node.js .
Node.js disertakan .
-Baca log perubahan untuk versi ini
+Baca changelog untuk versi ini.
-Baca pos artikel untuk versi ini
+Baca postingan blog untuk versi ini.
Pelajari cara memverifikasi SHASUMS yang ditandatangani
diff --git a/apps/site/pages/id/download/source-code/index.mdx b/apps/site/pages/id/download/source-code/index.mdx
index 0979f0795113f..823a8bc7e5478 100644
--- a/apps/site/pages/id/download/source-code/index.mdx
+++ b/apps/site/pages/id/download/source-code/index.mdx
@@ -13,9 +13,9 @@ Saya ingin versi kode sumber Node.js .
Node.js disertakan .
-Baca log perubahan untuk versi ini
+Baca changelog untuk versi ini.
-Baca pos artikel untuk versi ini
+Baca postingan blog untuk versi ini.
Pelajari cara memverifikasi SHASUMS yang ditandatangani
diff --git a/apps/site/pages/id/index.mdx b/apps/site/pages/id/index.mdx
index ae44c2e9515e5..cbe152c9a454f 100644
--- a/apps/site/pages/id/index.mdx
+++ b/apps/site/pages/id/index.mdx
@@ -4,131 +4,136 @@ layout: home
---
-
-
-
-
Jalankan JavaScript Di Mana Saja
-
- Node.js® adalah lingkungan runtime JavaScript gratis dan sumber terbuka yang
- lintas platform, yang memungkinkan pengembang membuat server, aplikasi web,
- alat baris perintah, dan skrip.
-
-
-
-
-
- {({ release }) => (
- <>
- Unduh Node.js (LTS)
-
- Unduhan Node.js {release.versionWithPrefix}
- 1 dengan dukungan jangka panjang (LTS).
- Node.js juga dapat diinstal melalui manajer paket.
-
- >
- )}
-
-
-
- {({ release }) => (
+
+
+
+
Jalankan JavaScript Di Mana Saja
+
+Node.js® adalah lingkungan runtime JavaScript gratis dan sumber terbuka yang
+lintas platform, yang memungkinkan pengembang membuat server, aplikasi web,
+alat baris perintah, dan skrip.
+
+
+
+
+
+ {({ release }) => (
+ <>
+ Unduh Node.js (LTS)
- Ingin fitur baru lebih cepat?
- Dapatkan Node.js {release.versionWithPrefix}
- 1 sebagai gantinya.
+ Unduhan Node.js {release.versionWithPrefix}
+ 1 dengan dukungan jangka panjang (LTS).
+ Node.js juga dapat diinstal melalui manajer paket.
- )}
-
-
-
+ >
+ )}
+
+
+
+ {({ release }) => (
+
+ Ingin fitur baru lebih cepat?
+ Dapatkan Node.js {release.versionWithPrefix}
+ 1 sebagai gantinya.
+
+ )}
+
+
-
- ```js displayName="Create an HTTP Server"
- // server.mjs
- import { createServer } from 'node:http';
-
- const server = createServer((req, res) => {
- res.writeHead(200, { 'Content-Type': 'text/plain' });
- res.end('Hello World!\n');
- });
-
- // starts a simple http server locally on port 3000
- server.listen(3000, '127.0.0.1', () => {
- console.log('Listening on 127.0.0.1:3000');
- });
-
- // run with `node server.mjs`
- ```
-
- ```js displayName="Write Tests"
- // tests.mjs
- import assert from 'node:assert';
- import test from 'node:test';
-
- test('that 1 is equal 1', () => {
- assert.strictEqual(1, 1);
- });
-
- test('that throws as 1 is not equal 2', () => {
- // throws an exception because 1 != 2
- assert.strictEqual(1, 2);
- });
-
- // run with `node tests.mjs`
- ```
-
- ```js displayName="Read and Hash a File"
- // crypto.mjs
- import { createHash } from 'node:crypto';
- import { readFile } from 'node:fs/promises';
-
- const hasher = createHash('sha1');
-
- hasher.setEncoding('hex');
- // ensure you have a `package.json` file for this test!
- hasher.write(await readFile('package.json'));
- hasher.end();
-
- const fileHash = hasher.read();
-
- // run with `node crypto.mjs`
- ```
-
- ```js displayName="Streams Pipeline"
- // streams.mjs
- import { pipeline } from 'node:stream/promises';
- import { createReadStream, createWriteStream } from 'node:fs';
- import { createGzip } from 'node:zlib';
-
- // ensure you have a `package.json` file for this test!
- await pipeline
- (
- createReadStream('package.json'),
- createGzip(),
- createWriteStream('package.json.gz')
- );
-
- // run with `node streams.mjs`
- ```
-
- ```js displayName="Work with Threads"
- // threads.mjs
- import { Worker, isMainThread,
- workerData, parentPort } from 'node:worker_threads';
-
- if (isMainThread) {
- const data = 'some data';
- const worker = new Worker(import.meta.filename, { workerData: data });
- worker.on('message', msg => console.log('Reply from Thread:', msg));
- } else {
- const source = workerData;
- parentPort.postMessage(btoa(source.toUpperCase()));
- }
-
- // run with `node threads.mjs`
- ```
-
-
- Pelajari lebih lanjut tentang apa yang bisa ditawarkan Node.js melalui [Bahan Pembelajaran](/learn) kami.
+
+ ```js displayName="Create an HTTP Server"
+ // server.mjs
+ import { createServer } from 'node:http';
+
+const server = createServer((req, res) => {
+res.writeHead(200, { 'Content-Type': 'text/plain' });
+res.end('Hello World!\n');
+});
+
+// starts a simple http server locally on port 3000
+server.listen(3000, '127.0.0.1', () => {
+console.log('Listening on 127.0.0.1:3000');
+});
+
+// run with `node server.mjs`
+
+````
+
+```js displayName="Write Tests"
+// tests.mjs
+import assert from 'node:assert';
+import test from 'node:test';
+
+test('that 1 is equal 1', () => {
+ assert.strictEqual(1, 1);
+});
+
+test('that throws as 1 is not equal 2', () => {
+ // throws an exception because 1 != 2
+ assert.strictEqual(1, 2);
+});
+
+// run with `node tests.mjs`
+````
+
+```js displayName="Read and Hash a File"
+// crypto.mjs
+import { createHash } from 'node:crypto';
+import { readFile } from 'node:fs/promises';
+
+const hasher = createHash('sha1');
+
+hasher.setEncoding('hex');
+// ensure you have a `package.json` file for this test!
+hasher.write(await readFile('package.json'));
+hasher.end();
+
+const fileHash = hasher.read();
+
+// run with `node crypto.mjs`
+```
+
+```js displayName="Streams Pipeline"
+// streams.mjs
+import { pipeline } from 'node:stream/promises';
+import { createReadStream, createWriteStream } from 'node:fs';
+import { createGzip } from 'node:zlib';
+
+// ensure you have a `package.json` file for this test!
+await pipeline(
+ createReadStream('package.json'),
+ createGzip(),
+ createWriteStream('package.json.gz')
+);
+
+// run with `node streams.mjs`
+```
+
+```js displayName="Work with Threads"
+// threads.mjs
+import {
+ Worker,
+ isMainThread,
+ workerData,
+ parentPort,
+} from 'node:worker_threads';
+
+if (isMainThread) {
+ const data = 'some data';
+ const worker = new Worker(import.meta.filename, { workerData: data });
+ worker.on('message', msg => console.log('Reply from Thread:', msg));
+} else {
+ const source = workerData;
+ parentPort.postMessage(btoa(source.toUpperCase()));
+}
+
+// run with `node threads.mjs`
+```
+
+
+
+Pelajari lebih lanjut tentang apa yang bisa ditawarkan Node.js melalui [Bahan Pembelajaran](/learn) kami.
+
diff --git a/apps/site/pages/ko/about/branding.mdx b/apps/site/pages/ko/about/branding.mdx
new file mode 100644
index 0000000000000..3b957d4cec5f4
--- /dev/null
+++ b/apps/site/pages/ko/about/branding.mdx
@@ -0,0 +1,84 @@
+---
+title: Node.js 브랜딩
+layout: about
+---
+
+Node.js 브랜딩
+
+Node.js® 로고 및 마크의 허용 가능한 사용에 대한 정보는 [상표 정책](https://trademark-policy.openjsf.org/)을 참조하세요.
+
+## Node.js® 마스코트
+
+로켓 거북이를 디자인하고 기여한 [Angela Angelini](https://www.linkedin.com/in/angeliningl/)에게 감사의 말씀을 전합니다.
+
+
+
+## Node.js® 로고
+
+### Node.js® 수평 로고
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+### Node.js® 세로 로고
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+### JS 아이콘
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/site/pages/ko/about/get-involved/collab-summit.md b/apps/site/pages/ko/about/get-involved/collab-summit.md
new file mode 100644
index 0000000000000..67244d8389d93
--- /dev/null
+++ b/apps/site/pages/ko/about/get-involved/collab-summit.md
@@ -0,0 +1,16 @@
+---
+title: 협업 정상 회담
+layout: about
+---
+
+# 협업 정상 회담
+
+Node.js의 협업 정상 회담은 현재 및 잠재적 기여자들이 모여 Node.js에 대해 활발하게 협력하고, 교육하며, 지식을 공유하는 비공식 회의입니다. 팀, 작업 그룹, 그리고 커뮤니티 기여자들이 연 2회 모여 의사 결정을 돕는 토론을 진행하고, 직접 추진하고 싶은 흥미로운 노력에 대해 작업합니다.
+
+## 누가 참석하나요?
+
+협업 정상 회담은 주로 기존 기여자와 커뮤니티 구성원이 참석하지만, 아직 기여자가 아닌 분들도 환영합니다. Node.js에 기여하는 데에 처음이신 분이라면, 협업 정상 회담은 커뮤니티에서 어떤 일이 일어나고 있는지 배우고, 보유한 기술로 기여할 수 있는 좋은 기회가 될 수 있습니다.
+
+정상 회담 전에 기여자와 커뮤니티 구성원들은 세션 제안을 제출하여 일정을 작성합니다. 참석자들은 현장에 도착하기 전에 세션을 미리 익히고, 일반적인 기여자 토론에 참여한 후 세션에 집중할 수 있습니다. 또한, 복도에서의 트랙이나 브레인스토밍을 위한 많은 기회도 제공될 것입니다.
+
+향후 및 과거의 협업 정상 회담에 대한 정보는 [정상 회담 저장소](https://github.com/openjs-foundation/summit)를 확인하세요. 기여자와 커뮤니티 구성원들이 직접 논의할 내용을 제안하는 [제기된 이슈](https://github.com/nodejs/summit/issues)를 살펴보세요.
diff --git a/apps/site/pages/ko/about/get-involved/events.mdx b/apps/site/pages/ko/about/get-involved/events.mdx
new file mode 100644
index 0000000000000..a351893233f2d
--- /dev/null
+++ b/apps/site/pages/ko/about/get-involved/events.mdx
@@ -0,0 +1,16 @@
+---
+title: 예정된 이벤트
+layout: about
+---
+
+## 예정된 이벤트
+
+Node.js 이벤트는 공개되어 있으며, 누구나 참여하고 참석할 수 있습니다.
+
+### 예정된 Node.js® 회의
+
+Node.js 프로젝트는 프로젝트의 다양한 측면을 논의하고 계획하기 위해 연중 여러 차례 회의를 개최합니다.
+
+다음 회의는 앞으로 7 일 이내에 예정되어 있습니다.
+
+
diff --git a/apps/site/pages/ko/about/get-involved/index.md b/apps/site/pages/ko/about/get-involved/index.md
new file mode 100644
index 0000000000000..1b4adb7941402
--- /dev/null
+++ b/apps/site/pages/ko/about/get-involved/index.md
@@ -0,0 +1,36 @@
+---
+title: 참여하기
+layout: about
+---
+
+# 참여하기
+
+Node.js 커뮤니티에 참여하고 싶다면 다양한 방법이 있습니다. Node.js 프로젝트는 크고 다양한 커뮤니티로, 단순히 코드를 작성하는 것 이상의 여러 방식으로 기여할 수 있습니다.
+
+## 커뮤니티 논의
+
+- [GitHub 이슈 목록](https://github.com/nodejs/node/issues)은 Node.js 핵심 기능에 대한 논의를 위한 곳이며, Node.js에 대한 질문이 있다면 [GitHub 토론](https://github.com/orgs/nodejs/discussions)을 이용할 수 있습니다.
+- [`nodejs/help`](https://github.com/nodejs/help/issues) 저장소는 Node.js에 대한 질문을 하는 곳입니다.
+- 공식 Node.js 트위터 계정은 [nodejs](https://twitter.com/nodejs)입니다.
+- [Node.js 프로젝트 캘린더](https://nodejs.org/calendar)에는 모든 공개 팀 회의가 포함되어 있습니다.
+
+## 학습 자료
+
+Node.js에 대해 더 배우고 싶다면, 많은 자료가 준비되어 있습니다.
+
+- [Node.js 웹사이트의 공식 학습 섹션](https://nodejs.org/en/learn/).
+- [공식 API 참조 문서](https://nodejs.org/api/).
+- [NodeSchool.io](https://nodeschool.io/)는 대화형 커맨드라인 게임을 통해 Node.js 개념을 가르쳐 줍니다.
+- [Stack Overflow Node.js 태그](https://stackoverflow.com/questions/tagged/node.js)에는 매일 새로운 정보가 모입니다.
+- [DEV 커뮤니티 Node.js 태그](https://dev.to/t/node)는 Node.js 프로젝트, 기사 및 튜토리얼을 공유하고 논의를 시작하며 Node.js 관련 주제에 대한 피드백을 요청할 수 있는 장소입니다. 모든 수준의 개발자가 참여할 수 있습니다.
+- [Reddit Node.js 커뮤니티](https://www.reddit.com/r/node)도 Node.js 프로젝트, 기사 및 튜토리얼을 공유하고 논의를 시작하며 Node.js 관련 주제에 대한 피드백을 요청할 수 있는 장소입니다. 모든 수준의 개발자가 참여할 수 있습니다.
+
+## 비공식 논의 영역
+
+Node.js에 대해 보다 비공식적으로 논의할 장소를 찾고 있다면 여러 비공식 논의 영역이 있습니다. 이들은 Node.js 프로젝트에서 공식적으로 승인된 것은 아니니 주의해 주시기 바랍니다. 또한 각자의 행동 강령 및 규칙을 따르세요.
+
+- [Node Slackers](https://www.nodeslackers.com/)는 Node.js 중심의 Slack 커뮤니티입니다.
+- [OpenJSF Slack](https://slack-invite.openjsf.org/)는 OpenJS 재단의 Slack 작업 공간입니다. Node.js 관련 채널이 여러 개 있습니다. _(채널 이름이 `#nodejs-`로 시작하는 채널은 프로젝트와 관련이 있습니다.)_
+- [Nodeiflux](https://discordapp.com/invite/vUsrbjd)는 서로를 지원하는 Node.js 백엔드 개발자들의 친근한 Discord 커뮤니티입니다.
+- [ES Community](https://discord.gg/zJsuc6vvhn)는 프랑스어를 사용하는 JavaScript 개발자를 위한 Discord 커뮤니티입니다.
+- `irc.libera.chat`의 `#node.js` 채널에서는 [IRC 클라이언트](https://en.wikipedia.org/wiki/Comparison_of_Internet_Relay_Chat_clients)를 사용하거나 [웹 클라이언트](https://kiwiirc.com/nextclient/)를 통해 웹 브라우저에서 채널에 연결할 수 있습니다.
diff --git a/apps/site/pages/ko/about/governance.md b/apps/site/pages/ko/about/governance.md
new file mode 100644
index 0000000000000..8e4eb43d35e7b
--- /dev/null
+++ b/apps/site/pages/ko/about/governance.md
@@ -0,0 +1,31 @@
+---
+title: 프로젝트 거버넌스
+layout: about
+---
+
+# 프로젝트 거버넌스
+
+## 합의 추구 과정
+
+Node.js 프로젝트는 합의 추구([Consensus Seeking][]) 의사 결정 모델을 따릅니다.
+
+## 기여자
+
+[nodejs/node][] 핵심 GitHub 리포지토리는 다른 기존 기여자에 의해 지속적으로 지명된 기여자들에 의해 유지 관리됩니다.
+
+상당하고 가치 있는 기여를 하는 개인들은 기여자로 임명되며 프로젝트에 대한 커밋 권한을 부여받습니다. 이러한 개인들은 다른 기여자들에 의해 식별되며, 그들의 지명은 기존 기여자들과 논의됩니다.
+
+현재 기여자 목록은 프로젝트의 [README.md][]에서 확인할 수 있습니다.
+
+기여자를 위한 가이드는 [collaborator-guide.md][]에서 유지 관리됩니다.
+
+## 기술 운영 위원회
+
+이 프로젝트는 기술 운영 위원회([Technical Steering Committee (TSC)][])에 의해 운영되며, 이는 프로젝트의 고위급 지침을 책임집니다. TSC는 다른 기존 TSC 멤버에 의해 지명된 활동적인 기여자의 하위 집합입니다.
+
+[consensus seeking]: https://en.wikipedia.org/wiki/Consensus-seeking_decision-making
+[readme.md]: https://github.com/nodejs/node/blob/main/README.md#current-project-team-members
+[tsc]: https://github.com/nodejs/TSC
+[technical steering committee (tsc)]: https://github.com/nodejs/TSC/blob/main/TSC-Charter.md
+[collaborator-guide.md]: https://github.com/nodejs/node/blob/main/doc/contributing/collaborator-guide.md
+[nodejs/node]: https://github.com/nodejs/node
diff --git a/apps/site/pages/ko/about/index.mdx b/apps/site/pages/ko/about/index.mdx
new file mode 100644
index 0000000000000..6b1f89e3ecfb4
--- /dev/null
+++ b/apps/site/pages/ko/about/index.mdx
@@ -0,0 +1,63 @@
+---
+title: Node.js®에 대하여
+layout: about
+---
+
+Node.js®에 대하여
+
+Node.js는 비동기 이벤트 기반의 JavaScript 런타임으로, 확장 가능한 네트워크 애플리케이션을 구축하도록 설계되었습니다. 다음의 "hello world" 예제에서는 많은 연결을 동시에 처리할 수 있습니다. 각 연결마다 콜백이 호출되지만, 할 일이 없으면 Node.js는 대기 상태가 됩니다.
+
+```cjs
+const { createServer } = require('node:http');
+
+const hostname = '127.0.0.1';
+const port = 3000;
+
+const server = createServer((req, res) => {
+ res.statusCode = 200;
+ res.setHeader('Content-Type', 'text/plain');
+ res.end('Hello World');
+});
+
+server.listen(port, hostname, () => {
+ console.log(`Server running at http://${hostname}:${port}/`);
+});
+```
+
+```mjs
+import { createServer } from 'node:http';
+
+const hostname = '127.0.0.1';
+const port = 3000;
+
+const server = createServer((req, res) => {
+ res.statusCode = 200;
+ res.setHeader('Content-Type', 'text/plain');
+ res.end('Hello World');
+});
+
+server.listen(port, hostname, () => {
+ console.log(`Server running at http://${hostname}:${port}/`);
+});
+```
+
+이는 운영 체제 스레드를 사용하는 오늘날의 더 일반적인 동시성 모델과 대조됩니다. 스레드 기반 네트워킹은 상대적으로 비효율적이며 사용하기도 매우 어렵습니다. 또한, Node.js 사용자는 락(lock)이 없기 때문에 프로세스가 데드락에 걸릴 걱정을 할 필요가 없습니다. Node.js의 거의 모든 함수는 직접 I/O를 수행하지 않으므로, Node.js 표준 라이브러리의 동기 메서드를 사용하여 I/O를 수행하는 경우를 제외하고는 프로세스가 차단되지 않습니다. 이처럼 차단이 발생하지 않기 때문에 Node.js에서는 확장 가능한 시스템을 개발하는 것이 매우 적합합니다.
+
+언어가 낯설다면 [Blocking vs. Non-Blocking][]에 대한 전체 기사를 참고하세요.
+
+---
+
+Node.js는 Ruby의 [Event Machine][]과 Python의 [Twisted][]와 같은 시스템에서 영향을 받아 이와 비슷한 설계를 가지고 있습니다. Node.js는 이벤트 모델을 한 단계 더 발전시켜, 이벤트 루프를 라이브러리가 아닌 런타임 구성 요소로 제공합니다.
+다른 시스템에서는 항상 이벤트 루프를 시작하기 위해 차단 호출(blocking call)이 필요합니다. 일반적으로 스크립트의 시작 부분에서 콜백을 통해 동작을 정의한 뒤, `EventMachine::run()`과 같은 차단 호출을 통해 서버를 시작합니다.
+반면, Node.js에서는 이벤트 루프를 시작하는 별도의 호출이 필요하지 않습니다. Node.js는 입력 스크립트를 실행한 후 자동으로 이벤트 루프에 진입하며, 처리할 콜백이 더 이상 없을 때 이벤트 루프를 종료합니다.
+동작은 브라우저 JavaScript와 유사하며, 이벤트 루프는 사용자에게 드러나지 않습니다.
+
+HTTP는 Node.js에서 중요한 구성 요소로 설계되었으며, 스트리밍 및 낮은 대기 시간을 염두에 두고 있습니다. 이러한 이유로 Node.js는 웹 라이브러리나 프레임워크의 기반으로 적합합니다.
+
+Node.js가 스레드 없이 설계되었다고 해서 환경에서 여러 코어를 활용할 수 없다는 것은 아닙니다. 자식 프로세스는 [`child_process.fork()`][] API를 사용하여 생성할 수 있으며, 통신이 용이하도록 설계되었습니다. 같은 인터페이스를 기반으로 [`cluster`][] 모듈이 있으며, 이를 통해 프로세스 간에 소켓을 공유하여 코어 간의 로드 밸런싱을 가능하게 합니다.[`child_process.fork()`][]
+
+[blocking vs. non-blocking]: /learn/asynchronous-work/overview-of-blocking-vs-non-blocking
+[`child_process.fork()`]: https://nodejs.org/api/child_process.html
+[`cluster`]: https://nodejs.org/api/cluster.html
+[event machine]: https://github.com/eventmachine/eventmachine
+[twisted]: https://twisted.org/
diff --git a/apps/site/pages/ko/about/previous-releases.mdx b/apps/site/pages/ko/about/previous-releases.mdx
new file mode 100644
index 0000000000000..4d30dc93c06a6
--- /dev/null
+++ b/apps/site/pages/ko/about/previous-releases.mdx
@@ -0,0 +1,25 @@
+---
+title: Node.js 릴리스
+layout: about
+---
+
+Node.js 릴리스
+
+Node.js 주요 버전은 _Current_ 릴리스 상태로 6개월 동안 유지되며, 이 기간 동안 라이브러리 작성자들이 해당 버전에 대한 지원을 추가할 시간을 제공합니다.
+6개월 후, 홀수 버전(9, 11 등)은 지원이 중단되고, 짝수 버전(10, 12 등)은 Active LTS 상태로 전환되어 일반 사용에 적합해집니다.
+_LTS_ 릴리스 상태는 "장기 지원(long-term support)"을 의미하며, 일반적으로 총 30개월 동안 중요한 버그가 수정될 것을 보장합니다.
+프로덕션 애플리케이션은 _Active LTS_ 또는 _Maintenance LTS_ 릴리스만 사용해야 합니다.
+
+## 릴리스 일정
+
+
+
+Node.js 릴리스 일정에 대한 전체 세부정보는 [GitHub](https://github.com/nodejs/release#release-schedule)에서 확인할 수 있습니다.
+
+### Commercial Support
+
+유지 관리 단계(Maintenance phase)를 지난 버전에 대한 상업적 지원은 OpenJS 생태계 지속 가능성 프로그램(OpenJS Ecosystem Sustainability Program)의 파트너인 [HeroDevs](https://herodevs.com/)를 통해 제공됩니다.
+
+## 버전 브랜치의 최신 릴리스를 찾고 계신가요?
+
+
diff --git a/apps/site/pages/ko/about/security-reporting.mdx b/apps/site/pages/ko/about/security-reporting.mdx
new file mode 100644
index 0000000000000..3f5e5252363e8
--- /dev/null
+++ b/apps/site/pages/ko/about/security-reporting.mdx
@@ -0,0 +1,64 @@
+---
+title: 보안 보고
+layout: about
+---
+
+보안 보고
+
+활성 보안 정책에 대한 자세한 내용은 [이 페이지](https://github.com/nodejs/node/security/policy)를 확인하세요.
+
+## Node.js의 버그 신고
+
+Node.js의 보안 버그는 [HackerOne](https://hackerone.com/nodejs)를 통해 신고해 주세요.
+
+신고는 5일 이내에 확인되며, 제출물 처리에 대한 다음 단계가 포함된 보다 구체적인 응답은 10일 이내에 받게 됩니다.
+
+신고에 대한 초기 답변 이후, 보안 팀은 문제 수정 및 전체 발표 진행 상황을 지속적으로 알려드리며, 신고된 문제에 대한 추가 정보나 안내를 요청할 수 있습니다.
+
+### Node.js 버그 바운티 프로그램
+
+Node.js 프로젝트는 보안 연구자 및 책임 있는 공개 보고를 위한 공식 버그 바운티 프로그램에 참여하고 있습니다. 이 프로그램은 HackerOne 플랫폼을 통해 관리됩니다. 자세한 내용은 [https://hackerone.com/nodejs](https://hackerone.com/nodejs)를 참조하세요.
+
+## 타사 모듈의 버그 신고
+
+타사 모듈의 보안 버그는 해당 모듈의 유지보수자에게 신고해야 합니다.
+
+## 공개 정책
+
+Node.js의 보안 공개 정책은 다음과 같습니다.
+
+보안 보고서가 수신되고 주요 담당자가 지정됩니다. 이 담당자는 수정 및 릴리스 프로세스를 조정합니다. 문제가 확인되고 영향을 받는 버전 목록이 결정됩니다. 코드 감사가 진행되어 유사한 잠재적 문제가 있는지 확인합니다. 유지 관리 중인 모든 릴리스에 대한 수정 사항이 준비되며, 이 수정 사항은 공개 리포지토리에 커밋되지 않고 발표를 기다리며 로컬에 보관됩니다.
+
+이 취약점에 대해 제안된 비공개 기간(엠바고 날짜)이 선택되며, 해당 취약점에 대한 CVE(Common Vulnerabilities and Exposures, CVE®)가 요청됩니다.
+
+비공개 기간에 Node.js 보안 메일링 리스트에 발표 사본이 발송됩니다. 변경 사항이 공개 리포지토리에 푸시되고, 새로운 빌드가 nodejs.org에 배포됩니다. 메일링 리스트에 통지된 후 6시간 이내에 advisory 사본이 Node.js 블로그에 게시됩니다.
+
+일반적으로, CVE가 발급된 시점부터 72시간 후로 비공개 기간(엠바고 날짜)이 설정됩니다. 그러나 이는 버그의 심각도나 수정 사항 적용의 난이도에 따라 달라질 수 있습니다.
+
+이 과정은 특히 다른 프로젝트의 유지관리자들과 조율이 필요한 경우 시간이 다소 걸릴 수 있습니다. 버그를 최대한 신속하게 처리하기 위해 모든 노력을 기울일 것이지만, 공개가 일관된 방식으로 처리될 수 있도록 위에 설명된 공개 절차를 따르는 것이 중요합니다.
+
+## 보안 업데이트 수신
+
+보안 알림은 다음 방법을 통해 배포됩니다.
+
+[Google Group](https://groups.google.com/group/nodejs-sec)
+[Node.js 블로그](/blog)
+
+## 이 정책에 대한 의견
+
+프로세스를 개선할 수 있는 제안이 있는 경우 [풀 리퀘스트](https://github.com/nodejs/nodejs.org)를 제출하시거나 [문제를 제기](https://github.com/nodejs/security-wg/issues/new)하여 논의해 주세요.
+
+## OpenSSF 모범 사례
+
+
+
+
+
+Open Source Security Foundation(OpenSSF) [모범 사례 배지](https://github.com/coreinfrastructure/best-practices-badge)는 자유/오픈 소스 소프트웨어(FLOSS) 프로젝트가 모범 사례를 따르고 있음을 보여주는 방법입니다. 프로젝트는 자발적으로 각 사례를 어떻게 따르고 있는지에 대해 자체 인증할 수 있습니다. 이 배지를 확인하는 사용자들은 FLOSS 프로젝트가 모범 사례를 따르고 있는지 빠르게 평가할 수 있으며, 그 결과 더 높은 품질의 안전한 소프트웨어를 제작할 가능성이 높다는 것을 알 수 있습니다.
diff --git a/apps/site/pages/ko/download/package-manager/all.md b/apps/site/pages/ko/download/package-manager/all.md
new file mode 100644
index 0000000000000..4f04273c4f5b0
--- /dev/null
+++ b/apps/site/pages/ko/download/package-manager/all.md
@@ -0,0 +1,390 @@
+---
+layout: article
+title: 패키지 관리자를 통한 Node.js 설치
+---
+
+# 패키지 관리자를 통한 Node.js 설치
+
+> 이 페이지의 패키지는 각각의 패키지 관리자에 의해 유지 관리 및 지원되며, **Node.js 코어 팀이 지원하는 것이 아닙니다**. 문제가 발생하면 패키지 관리자에게 문의해 주세요. 만약 문제가 Node.js 자체의 버그라면, 패키지 관리자가 이를 상위 리포트에 전달할 것입니다.
+
+## Alpine Linux
+
+Node.js LTS 및 npm 패키지는 Main Repository에서 사용할 수 있습니다.
+
+```bash
+apk add nodejs npm
+```
+
+Node.js Current 버전은 Community Repository에서 설치할 수 있습니다.
+
+```bash
+apk add nodejs-current
+```
+
+## Android
+
+Android에서 Node.js 지원은 아직 실험적이며, Node.js 개발자들이 제공하는 미리 컴파일된 바이너리는 아직 없습니다.
+
+하지만, 타사 솔루션이 몇 가지 있습니다. 예를 들어, [Termux](https://termux.com/) 커뮤니티는 Android용 터미널 에뮬레이터와 Linux 환경을 제공하며, 자체 패키지 관리자와 [광범위한 미리 컴파일된 애플리케이션 모음](https://github.com/termux/termux-packages)을 제공합니다. Termux 앱에서 다음 명령어를 실행하면 최신 Node.js 버전을 설치할 수 있습니다:
+
+```bash
+pkg install nodejs
+```
+
+현재 Termux의 Node.js 바이너리는 `system-icu`에 연결되어 있습니다(이는 `libicu` 패키지에 따라 달라집니다).
+
+## Arch Linux
+
+Node.js 및 npm 패키지는 Community Repository에서 사용할 수 있습니다.
+
+```bash
+pacman -S nodejs npm
+```
+
+## CentOS, Fedora 및 Red Hat Enterprise Linux
+
+Node.js는 CentOS/RHEL 8 및 Fedora에서 `nodejs`라는 모듈로 사용할 수 있습니다.
+
+```bash
+dnf module install nodejs:
+```
+
+여기서 ``은 Node.js의 주요 버전과 대응됩니다. 사용 가능한 스트림 목록을 보려면:
+
+```bash
+dnf module list nodejs
+```
+
+예를 들어, Node.js 18을 설치하려면:
+
+```bash
+dnf module install nodejs:18/common
+```
+
+### 대안
+
+이 리소스들은 CentOS, Fedora 및 RHEL과 호환되는 패키지를 제공합니다.
+
+- [Node.js snaps](#snap) - https://github.com/nodejs/snap에서 유지 관리 및 지원
+- [NodeSource](https://github.com/nodesource/distributions)에서 유지 관리하고 지원하는 [Node.js 바이너리 배포판](#debian-and-ubuntu-based-linux-distributions)
+
+## Debian 및 Ubuntu 기반 리눅스 배포판
+
+[Node.js 바이너리 배포판](https://github.com/nodesource/distributions)은 NodeSource에서 사용할 수 있습니다.
+
+### 대안
+
+Debian 및 Ubuntu 기반 리눅스 배포판과 호환되는 패키지는 [Node.js snaps](#snap)를 통해 사용할 수 있습니다.
+
+## Exherbo Linux
+
+Node.js 및 npm 패키지는 [arbor repository](https://gitlab.exherbo.org/exherbo/arbor/-/tree/master/packages/dev-lang/node)에서 사용할 수 있습니다.
+
+```bash
+cave resolve -x node
+```
+
+## fnm
+
+Fast and simple Node.js 버전 관리자로 Rust로 작성되어 여러 릴리즈된 Node.js 버전을 관리하는 데 사용됩니다. 설치, 제거, 현재 디렉터리에 따라 Node 버전 자동 전환 등의 작업을 수행할 수 있습니다.
+fnm을 설치하려면 이 [설치 스크립트](https://github.com/Schniz/fnm#using-a-script-macoslinux)를 사용하세요.
+
+fnm은 크로스 플랫폼 지원(맥OS, 윈도우, 리눅스)과 모든 인기 있는 셸(Bash, Zsh, Fish, PowerShell, Windows Command Line Prompt)을 지원합니다.
+fnm은 속도를 염두에 두고 설계되었으며 `.node-version` 및 `.nvmrc` 파일에 대한 호환성을 지원합니다.
+
+## FreeBSD
+
+Node.js의 최신 릴리즈는 [www/node](https://www.freshports.org/www/node) 포트를 통해 사용할 수 있습니다.
+
+바이너리 패키지를 [pkg](https://www.freebsd.org/cgi/man.cgi?pkg)를 통해 설치하려면:
+
+```bash
+pkg install node
+```
+
+또는 [ports](https://www.freebsd.org/cgi/man.cgi?ports)를 사용하여 직접 컴파일하려면:
+
+```bash
+cd /usr/ports/www/node && make install
+```
+
+## Gentoo
+
+Node.js는 포트리지 트리에 있습니다.
+
+```bash
+emerge nodejs
+```
+
+## IBM i
+
+Node.js의 LTS 버전은 IBM에서 사용할 수 있으며, [yum 패키지 관리자](https://ibm.biz/ibmi-rpms)를 통해 설치할 수 있습니다. 패키지 이름은 주요 버전 번호가 붙은 `nodejs`입니다(예: `nodejs18`, `nodejs20` 등).
+
+명령줄에서 Node.js 20.x를 설치하려면, \*ALLOBJ 특수 권한을 가진 사용자로 다음을 실행하세요:
+
+```bash
+yum install nodejs20
+```
+
+Node.js는 IBM i Access Client Solutions 제품을 통해서도 설치할 수 있습니다. 자세한 내용은 [이 지원 문서](http://www-01.ibm.com/support/docview.wss?uid=nas8N1022619)를 참조하세요.
+
+## macOS
+
+[macOS Installer](/#home-downloadhead)를 직접 [nodejs.org](https://nodejs.org/) 웹사이트에서 다운로드하세요.
+
+만약 bash로 패키지를 다운로드하려면:
+
+```bash
+curl "https://nodejs.org/dist/latest/$(curl -s https://nodejs.org/dist/latest/ | grep "pkg" | cut -d'"' -f 2)" -o "$HOME/Downloads/node-latest.pkg" && sudo installer -store -pkg "$HOME/Downloads/node-latest.pkg" -target "/"
+```
+
+### 대안
+
+\*\*[Homebrew](https://brew.sh/)\*\*를 사용하는 경우:
+
+```bash
+brew install node
+```
+
+\*\*[MacPorts](https://www.macports.org/)\*\*를 사용하는 경우:
+
+```bash
+port install nodejs
+
+# Example
+port install nodejs7
+```
+
+\*\*[pkgsrc](https://pkgsrc.joyent.com/install-on-macos/)\*\*를 사용하는 경우:
+
+이진 패키지를 설치하려면:
+
+```bash
+pkgin -y install nodejs
+```
+
+또는 pkgsrc에서 수동으로 빌드하려면:
+
+```bash
+cd pkgsrc/lang/nodejs && bmake install
+```
+
+## n
+
+`n`은 Mac과 Linux에서 사용하기 쉬운 Node.js 버전 관리자입니다. 설치할 대상 버전을 풍부한 구문을 사용하여 지정하거나, 이전에 다운로드한 버전 목록에서 선택할 수 있습니다. 버전은 시스템 전체 또는 사용자 범위로 설치되며, 보다 특화된 사용을 위해 캐시된 다운로드에서 직접 버전을 실행할 수 있습니다.
+
+설치 방법(부트스트랩, npm, Homebrew, 타사) 및 모든 사용 세부정보는 [홈페이지](https://github.com/tj/n)에서 확인하세요.
+
+이미 `npm`이 설치되어 있다면 `n`을 설치한 후 최신 LTS `node` 버전을 설치하는 것은 다음과 같이 간단합니다:
+
+```
+npm install -g n
+n lts
+```
+
+## NetBSD
+
+Node.js는 pkgsrc 트리에서 사용할 수 있습니다:
+
+```bash
+cd /usr/pkgsrc/lang/nodejs && make install
+```
+
+또는 pkgin을 사용하여 이진 패키지를 설치하려면(플랫폼에 사용할 수 있는 경우):
+
+```bash
+pkgin -y install nodejs
+```
+
+## Nodenv
+
+`nodenv`는 `nvm`과 유사한 경량 Node 버전 관리자입니다. 간단하고 예측 가능합니다. 풍부한 플러그인 생태계는 필요에 맞게 조정할 수 있게 해줍니다. `nodenv`를 사용하여 애플리케이션에 대한 Node 버전을 선택하고 개발 환경이 프로덕션과 일치하도록 보장합니다.
+
+Nodenv 설치 지침은 [Github 페이지](https://github.com/nodenv/nodenv#installation)에서 유지 관리됩니다. 해당 페이지를 방문하여 최신 버전의 설치 단계를 따르고 있는지 확인하세요.
+
+## nvm
+
+Node Version Manager는 여러 릴리스된 Node.js 버전을 관리하는 데 사용되는 bash 스크립트입니다. 설치, 제거, 버전 전환 등의 작업을 수행할 수 있습니다.
+nvm을 설치하려면 이 [설치 스크립트](https://github.com/nvm-sh/nvm#install--update-script)를 사용하세요.
+
+Unix / OS X 시스템에서는 소스에서 빌드된 Node.js를 nvm을 사용하여 설치할 수 있으며, nvm이 예상하는 위치에 설치해야 합니다:
+
+```bash
+env VERSION=`python tools/getnodeversion.py` make install DESTDIR=`nvm_version_path v$VERSION` PREFIX=""
+```
+
+이후에는 `nvm`을 사용하여 릴리스된 버전과 소스에서 빌드된 버전 간에 전환할 수 있습니다. 예를 들어 Node.js 버전이 v8.0.0-pre인 경우:
+
+```bash
+nvm use 8
+```
+
+공식 릴리스가 나오면 소스에서 빌드한 버전을 제거하려고 할 것입니다:
+
+```bash
+nvm uninstall 8
+```
+
+## nvs
+
+#### Windows
+
+`nvs` 버전 관리자는 크로스 플랫폼이며 Windows, macOS 및 Unix 유사 시스템에서 사용할 수 있습니다.
+
+Windows에 `nvs`를 설치하려면 [릴리스 페이지](https://github.com/jasongin/nvs/releases)로 가서 최신 릴리스의 MSI 설치 파일을 다운로드하세요.
+
+`chocolatey`를 사용하여 설치할 수도 있습니다:
+
+```bash
+choco install nvs
+```
+
+#### macOS, Unix 유사 시스템
+
+macOS/Unix 유사 시스템에서 `nvs`의 설치 단계에 대한 문서는 [여기](https://github.com/jasongin/nvs/blob/master/doc/SETUP.md#mac-linux)에서 확인할 수 있습니다.
+
+#### 사용법
+
+이후에는 `nvs`를 사용하여 다른 Node 버전 간에 전환할 수 있습니다.
+
+Node의 최신 버전을 추가하려면:
+
+```bash
+nvs add latest
+```
+
+또는 Node의 최신 LTS 버전을 추가하려면:
+
+```bash
+nvs add lts
+```
+
+그런 다음 `nvs use` 명령을 실행하여 현재 셸의 `PATH`에 Node 버전을 추가하세요:
+
+```bash
+$ nvs use lts
+PATH -= %LOCALAPPDATA%\nvs\default
+PATH += %LOCALAPPDATA%\nvs\node\14.17.0\x64
+```
+
+`PATH`에 영구적으로 추가하려면 `nvs link`를 사용하세요:
+
+```bash
+nvs link lts
+```
+
+## OpenBSD
+
+Node.js is available through the ports system.
+
+```bash
+/usr/ports/lang/node
+```
+
+Using [pkg_add](https://man.openbsd.org/OpenBSD-current/man1/pkg_add.1) on OpenBSD:
+
+```bash
+pkg_add node
+```
+
+## openSUSE 및 SLE
+
+Node.js는 다음 패키지로 메인 리포지토리에서 사용할 수 있습니다:
+
+- **openSUSE Leap 15.2**: `nodejs10`, `nodejs12`, `nodejs14`
+- **openSUSE Tumbleweed**: `nodejs20`
+- **SUSE Linux Enterprise Server (SLES) 12**: `nodejs10`, `nodejs12`, 및 `nodejs14`
+ ( "웹 및 스크립팅 모듈"이 [활성화](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12-SP5/#intro-modulesExtensionsRelated)되어야 합니다.)
+- **SUSE Linux Enterprise Server (SLES) 15 SP2**: `nodejs10`, `nodejs12`, 및 `nodejs14`
+ ( "웹 및 스크립팅 모듈"이 [활성화](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/15/#Intro.Module)되어야 합니다.)
+
+예를 들어, openSUSE Leap 15.2에서 Node.js 14.x를 설치하려면 다음 명령을 root로 실행하세요:
+
+```bash
+zypper install nodejs14
+```
+
+서로 다른 주요 버전의 Node는 동시에 설치하고 사용할 수 있습니다.
+
+## SmartOS 및 illumos
+
+SmartOS 이미지는 pkgsrc가 사전 설치되어 제공됩니다. 다른 illumos 배포판에서는 먼저 \*\*[pkgsrc](https://pkgsrc.joyent.com/install-on-illumos/)\*\*를 설치한 다음, 다음과 같이 이진 패키지를 정상적으로 설치할 수 있습니다:
+
+```bash
+pkgin -y install nodejs
+```
+
+또는 pkgsrc에서 수동으로 빌드하려면:
+
+```bash
+cd pkgsrc/lang/nodejs && bmake install
+```
+
+## Snap
+
+[Node.js snaps](https://github.com/nodejs/snap)는 Snap 스토어에서 [`node`](https://snapcraft.io/node)로 제공됩니다.
+
+## Solus
+
+Solus는 메인 리포지토리에서 Node.js를 제공합니다.
+
+```bash
+sudo eopkg install nodejs
+```
+
+## vfox
+
+Windows, macOS, Linux를 위한 **확장 가능한** 크로스 플랫폼 버전 관리자입니다.
+
+다양한 프로젝트에 대해 **다양한 버전**을 사용하거나, **다양한 셸에 대해** 다른 버전을 사용하고, 현재 디렉토리에 따라 Node 버전을 자동으로 전환할 수 있습니다.
+
+모든 인기 있는 셸(Bash, Zsh, Fish, PowerShell, Clink, Cmder)을 지원합니다.
+
+vfox를 신속하게 사용하기 위한 [빠른 시작 가이드](https://vfox.lhan.me/guides/quick-start.html)와 모든 사용 세부정보를 확인하세요.
+
+## Void Linux
+
+Void Linux는 메인 리포지토리에서 Node.js의 안정적인 버전을 제공합니다.
+
+```bash
+xbps-install -Sy nodejs
+```
+
+## Windows
+
+[Windows Installer](/#home-downloadhead)를 [nodejs.org](https://nodejs.org/) 웹사이트에서 직접 다운로드하세요.
+
+### 대안
+
+\*\*[Winget](https://aka.ms/winget-cli)\*\*를 사용하여:
+
+```bash
+winget install OpenJS.NodeJS
+# or for LTS
+winget install OpenJS.NodeJS.LTS
+```
+
+위의 두 명령 중 하나를 실행한 후 `node` CLI 명령이 사용 가능해지기 전에 터미널 에뮬레이터를 재시작해야 할 수도 있습니다.
+
+\*\*[Chocolatey](https://chocolatey.org/)\*\*를 사용하여:
+
+```bash
+cinst nodejs
+# or for full install with npm
+cinst nodejs.install
+```
+
+\*\*[Scoop](https://scoop.sh/)\*\*를 사용하여:
+
+```bash
+scoop install nodejs
+# or for LTS
+scoop install nodejs-lts
+```
+
+## z/OS
+
+IBM® SDK for Node.js - z/OS®는 두 가지 설치 형식(SMP/E 및 PAX)으로 제공됩니다. 해당하는 설치 형식을 선택하세요:
+
+- [z/OS에서 Node.js의 SMP/E 버전 설치 및 구성하기](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-smpe-edition)
+- [z/OS에서 Node.js의 PAX 버전 설치 및 구성하기](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-pax-edition)
diff --git a/apps/site/pages/ko/download/package-manager/current.mdx b/apps/site/pages/ko/download/package-manager/current.mdx
new file mode 100644
index 0000000000000..0f279d8b4cecf
--- /dev/null
+++ b/apps/site/pages/ko/download/package-manager/current.mdx
@@ -0,0 +1,25 @@
+---
+layout: download
+title: Node.js® 다운로드
+subtitle: 원하는 방식으로 Node.js를 다운로드하세요.
+---
+
+
+를 사용하여 에 Node.js 를 설치하세요.
+
+
+
+
+
+Node.js에는 가 포함되어 있습니다.
+
+이 버전의 변경 내역을 확인하세요.
+
+이 버전의 블로그 게시물을 확인하세요.
+
+서명된 SHASUMS를
+확인하는 방법을 알아보세요.
+
+커뮤니티에서 지원하는 다른 패키지 관리자도 확인하세요.
+
+
diff --git a/apps/site/pages/ko/download/package-manager/index.mdx b/apps/site/pages/ko/download/package-manager/index.mdx
new file mode 100644
index 0000000000000..0f279d8b4cecf
--- /dev/null
+++ b/apps/site/pages/ko/download/package-manager/index.mdx
@@ -0,0 +1,25 @@
+---
+layout: download
+title: Node.js® 다운로드
+subtitle: 원하는 방식으로 Node.js를 다운로드하세요.
+---
+
+
+를 사용하여 에 Node.js 를 설치하세요.
+
+
+
+
+
+Node.js에는 가 포함되어 있습니다.
+
+이 버전의 변경 내역을 확인하세요.
+
+이 버전의 블로그 게시물을 확인하세요.
+
+서명된 SHASUMS를
+확인하는 방법을 알아보세요.
+
+커뮤니티에서 지원하는 다른 패키지 관리자도 확인하세요.
+
+
diff --git a/apps/site/pages/ko/download/prebuilt-binaries/current.mdx b/apps/site/pages/ko/download/prebuilt-binaries/current.mdx
new file mode 100644
index 0000000000000..c537c8a3ad8a0
--- /dev/null
+++ b/apps/site/pages/ko/download/prebuilt-binaries/current.mdx
@@ -0,0 +1,24 @@
+---
+layout: download
+title: Node.js® 다운로드
+subtitle: 원하는 방식으로 Node.js를 다운로드하세요.
+---
+
+
+에서 실행되는 용 Node.js의 버전을 원합니다.
+
+
+
+
+
+Node.js에는 가 포함되어 있습니다.
+
+이 버전의 변경 내역을 확인하세요.
+
+이 버전의 블로그 게시물을 확인하세요.
+
+서명된 SHASUMS를
+확인하는 방법을 배워보세요.
+
+Nightly 사전 빌드된 바이너리 또는 다른 플랫폼에 맞는 비공식 빌드를 확인하세요.
+
diff --git a/apps/site/pages/ko/download/prebuilt-binaries/index.mdx b/apps/site/pages/ko/download/prebuilt-binaries/index.mdx
new file mode 100644
index 0000000000000..b938501de8686
--- /dev/null
+++ b/apps/site/pages/ko/download/prebuilt-binaries/index.mdx
@@ -0,0 +1,24 @@
+---
+layout: download
+title: Node.js® 다운로드
+subtitle: 원하는 방식으로 Node.js를 다운로드하세요.
+---
+
+
+에서 실행되는 용 Node.js의 버전을 원합니다.
+
+
+
+
+
+Node.js에는 가 포함되어 있습니다.
+
+이 버전의 변경 내역을 확인하세요.
+
+이 버전의 블로그 게시물을 확인하세요.
+
+서명된 SHASUMS를
+확인하는 방법을 배워보세요.
+
+Nightly 사전 빌드된 바이너리, 모든 Release 사전 빌드된 바이너리, 또는 다른 플랫폼에 맞는 비공식 빌드를 확인하세요.
+
diff --git a/apps/site/pages/ko/download/prebuilt-installer/current.mdx b/apps/site/pages/ko/download/prebuilt-installer/current.mdx
new file mode 100644
index 0000000000000..269e4bb2ad06e
--- /dev/null
+++ b/apps/site/pages/ko/download/prebuilt-installer/current.mdx
@@ -0,0 +1,26 @@
+---
+layout: download
+title: Node.js® 다운로드
+subtitle: 원하는 방식으로 Node.js를 다운로드하세요.
+---
+
+
+에서 실행되는 용 Node.js의 버전을 원합니다.
+
+
+
+
+
+Node.js에는 가 포함되어 있습니다.
+
+이 버전의 변경 내역을 확인하세요.
+
+이 버전의 블로그 게시물을 확인하세요.
+
+서명된 SHASUMS를
+확인하는 방법을 배워보세요.
+
+모든 사용 가능한 Node.js 다운로드 옵션을 확인하세요.
+
+Node.js 릴리스를 알아보세요.
+
diff --git a/apps/site/pages/ko/download/prebuilt-installer/index.mdx b/apps/site/pages/ko/download/prebuilt-installer/index.mdx
new file mode 100644
index 0000000000000..40170f98fb381
--- /dev/null
+++ b/apps/site/pages/ko/download/prebuilt-installer/index.mdx
@@ -0,0 +1,26 @@
+---
+layout: download
+title: Node.js® 다운로드
+subtitle: 원하는 방법으로 Node.js를 다운로드 하세요.
+---
+
+
+에서 실행되는 용 Node.js의 버전을 원합니다.
+
+
+
+
+
+Node.js에는 가 포함되어 있습니다.
+
+이 버전의 변경 내역을 확인하세요.
+
+이 버전의 블로그 게시물을 확인하세요.
+
+서명된 SHASUMS를
+확인하는 방법을 배워보세요.
+
+모든 사용 가능한 Node.js 다운로드 옵션을 확인하세요.
+
+Node.js 릴리스를 알아보세요.
+
diff --git a/apps/site/pages/ko/download/source-code/current.mdx b/apps/site/pages/ko/download/source-code/current.mdx
new file mode 100644
index 0000000000000..85b8cba1c0dce
--- /dev/null
+++ b/apps/site/pages/ko/download/source-code/current.mdx
@@ -0,0 +1,25 @@
+---
+layout: download
+title: Node.js® 다운로드
+subtitle: 원하는 방식으로 Node.js를 다운로드하세요.
+---
+
+
+ 버전의 Node.js 소스 코드를 원합니다.
+
+
+
+
+
+Node.js에는 가 포함되어 있습니다.
+
+이 버전의 변경 내역을 확인하세요.
+
+이 버전의 블로그 게시물을 확인하세요.
+
+서명된 SHASUMS을
+확인하는 방법을 알아보세요.
+
+Node.js를 소스에서 빌드하는 방법을 확인하세요.
+
+
diff --git a/apps/site/pages/ko/download/source-code/index.mdx b/apps/site/pages/ko/download/source-code/index.mdx
index b43f6026650ba..9917328435164 100644
--- a/apps/site/pages/ko/download/source-code/index.mdx
+++ b/apps/site/pages/ko/download/source-code/index.mdx
@@ -13,10 +13,9 @@ subtitle: 원하는 방법으로 Node.js를 다운로드 하세요.
Node.js에는 이 포함되어 있습니다.
-변경된 사항은 다음을 참고하세요. 이 버전
+이 버전의 변경 내역을 확인하세요.
-이 버전에 대한 블로그 포스트를
-확인합니다.
+이 버전의 블로그 게시물을 확인하세요.
SHA 서명 확인라는
방법을 배워보세요.
diff --git a/apps/site/pages/ko/index.mdx b/apps/site/pages/ko/index.mdx
index fe2b341d8ca08..2f0beb35634f9 100644
--- a/apps/site/pages/ko/index.mdx
+++ b/apps/site/pages/ko/index.mdx
@@ -1,133 +1,137 @@
---
-title: 어디서든 JavaScript를 실행하세요!!
+title: 어디서든 JavaScript를 실행하세요
layout: home
---
-
-
-
-
- {({ release }) => (
- <>
- Node.js 다운로드 (LTS)
-
- Node.js 다운로드 {release.versionWithPrefix}
- 1 LTS.
- Node.js는 package managers를 통해서도 다운로드 할 수 있습니다..
-
- >
- )}
-
-
-
- {({ release }) => (
+
+
+
+
어디서든 JavaScript를 실행하세요
+
+Node.js®는 무료, 오픈소스, 다중 플랫폼 JavaScript 런타임 환경으로 개발자 여러분이 서버, 웹 애플리케이션, 명령어 작성 도구와 스크립트를 만들도록 해줍니다.
+
+
+
+
+
+ {({ release }) => (
+ <>
+ Node.js 다운로드 (LTS)
- 새로운 기능을 먼저 경험하고 싶다면
- Node.js {release.versionWithPrefix}
- 1 를 다운 받으세요.
+ Node.js 다운로드 {release.versionWithPrefix}
+ 1 LTS.
+ Node.js는 패키지 관리자를 통해서도 다운로드 할 수 있습니다.
- )}
-
-
-
+ >
+ )}
+
+
+
+ {({ release }) => (
+
+ 새로운 기능을 먼저 경험하고 싶다면
+ Node.js {release.versionWithPrefix}
+ 1 를 다운 받으세요.
+
+ )}
+
+
-
- ```js displayName="Create an HTTP Server"
- // server.mjs
- import { createServer } from 'node:http';
-
- const server = createServer((req, res) => {
- res.writeHead(200, { 'Content-Type': 'text/plain' });
- res.end('Hello World!\n');
- });
-
- // starts a simple http server locally on port 3000
- server.listen(3000, '127.0.0.1', () => {
- console.log('Listening on 127.0.0.1:3000');
- });
-
- // run with `node server.mjs`
- ```
-
- ```js displayName="Write Tests"
- // tests.mjs
- import assert from 'node:assert';
- import test from 'node:test';
-
- test('that 1 is equal 1', () => {
- assert.strictEqual(1, 1);
- });
-
- test('that throws as 1 is not equal 2', () => {
- // throws an exception because 1 != 2
- assert.strictEqual(1, 2);
- });
-
- // run with `node tests.mjs`
- ```
-
- ```js displayName="Read and Hash a File"
- // crypto.mjs
- import { createHash } from 'node:crypto';
- import { readFile } from 'node:fs/promises';
-
- const hasher = createHash('sha1');
-
- hasher.setEncoding('hex');
- // ensure you have a `package.json` file for this test!
- hasher.write(await readFile('package.json'));
- hasher.end();
-
- const fileHash = hasher.read();
-
- // run with `node crypto.mjs`
- ```
-
- ```js displayName="Streams Pipeline"
- // streams.mjs
- import { pipeline } from 'node:stream/promises';
- import { createReadStream, createWriteStream } from 'node:fs';
- import { createGzip } from 'node:zlib';
-
- // ensure you have a `package.json` file for this test!
- await pipeline
- (
- createReadStream('package.json'),
- createGzip(),
- createWriteStream('package.json.gz')
- );
-
- // run with `node streams.mjs`
- ```
-
- ```js displayName="Work with Threads"
- // threads.mjs
- import { Worker, isMainThread,
- workerData, parentPort } from 'node:worker_threads';
-
- if (isMainThread) {
- const data = 'some data';
- const worker = new Worker(import.meta.filename, { workerData: data });
- worker.on('message', msg => console.log('Reply from Thread:', msg));
- } else {
- const source = workerData;
- parentPort.postMessage(btoa(source.toUpperCase()));
- }
-
- // run with `node threads.mjs`
- ```
-
-
- Node.js에 대해 더 알고 싶다면 학습 자료를 확인하세요[Learning materials](/learn).
+
+ ```js displayName="Create an HTTP Server"
+ // server.mjs
+ import { createServer } from 'node:http';
+
+const server = createServer((req, res) => {
+res.writeHead(200, { 'Content-Type': 'text/plain' });
+res.end('Hello World!\n');
+});
+
+// starts a simple http server locally on port 3000
+server.listen(3000, '127.0.0.1', () => {
+console.log('Listening on 127.0.0.1:3000');
+});
+
+// run with `node server.mjs`
+
+````
+
+```js displayName="Write Tests"
+// tests.mjs
+import assert from 'node:assert';
+import test from 'node:test';
+
+test('that 1 is equal 1', () => {
+ assert.strictEqual(1, 1);
+});
+
+test('that throws as 1 is not equal 2', () => {
+ // throws an exception because 1 != 2
+ assert.strictEqual(1, 2);
+});
+
+// run with `node tests.mjs`
+````
+
+```js displayName="Read and Hash a File"
+// crypto.mjs
+import { createHash } from 'node:crypto';
+import { readFile } from 'node:fs/promises';
+
+const hasher = createHash('sha1');
+
+hasher.setEncoding('hex');
+// ensure you have a `package.json` file for this test!
+hasher.write(await readFile('package.json'));
+hasher.end();
+
+const fileHash = hasher.read();
+
+// run with `node crypto.mjs`
+```
+
+```js displayName="Streams Pipeline"
+// streams.mjs
+import { pipeline } from 'node:stream/promises';
+import { createReadStream, createWriteStream } from 'node:fs';
+import { createGzip } from 'node:zlib';
+
+// ensure you have a `package.json` file for this test!
+await pipeline(
+ createReadStream('package.json'),
+ createGzip(),
+ createWriteStream('package.json.gz')
+);
+
+// run with `node streams.mjs`
+```
+
+```js displayName="Work with Threads"
+// threads.mjs
+import {
+ Worker,
+ isMainThread,
+ workerData,
+ parentPort,
+} from 'node:worker_threads';
+
+if (isMainThread) {
+ const data = 'some data';
+ const worker = new Worker(import.meta.filename, { workerData: data });
+ worker.on('message', msg => console.log('Reply from Thread:', msg));
+} else {
+ const source = workerData;
+ parentPort.postMessage(btoa(source.toUpperCase()));
+}
+
+// run with `node threads.mjs`
+```
+
+
+
+Node.js에 대해 더 알고 싶다면 학습 자료를 확인하세요[Learning materials](/learn).
+
diff --git a/apps/site/pages/pt/about/previous-releases.mdx b/apps/site/pages/pt/about/previous-releases.mdx
index 1d98dae5c5f35..503b6a9241cb6 100644
--- a/apps/site/pages/pt/about/previous-releases.mdx
+++ b/apps/site/pages/pt/about/previous-releases.mdx
@@ -13,6 +13,10 @@ As principais versões da Node.js entram no estado de lançamento _Atual (Curren
Todos os detalhes sobre o calendário de lançamento da Node.js estão disponíveis [na GitHub](https://github.com/nodejs/release#release-schedule).
+### Apoio Comercial
+
+apoio comercial para versões após a fase de Manutenção está disponível através do nosso parceiro do Programa de Sustentabilidade do Ecossistema da OpenJS [HeroDevs](https://herodevs.com/).
+
## Procura o lançamento mais recente de um ramo de versão?
diff --git a/apps/site/pages/tr/about/governance.md b/apps/site/pages/tr/about/governance.md
index 0a1db1d9735fa..7b797d541186b 100644
--- a/apps/site/pages/tr/about/governance.md
+++ b/apps/site/pages/tr/about/governance.md
@@ -7,7 +7,7 @@ layout: about
## Uzlaşma Arama Süreci
-Node.js projesi bir [Uzlaşma Arayışı][consensus seeking] karar verme modeli izlemektedir.
+Node.js projesi bir [Uzlaşma Arayışı][] karar verme modeli izlemektedir.
## İş birlikçiler
@@ -21,7 +21,7 @@ Node.js projesi bir [Uzlaşma Arayışı][consensus seeking] karar verme modeli
## Teknik Yönlendirme Komitesi
-Proje, projenin üst düzey rehberliğinden sorumlu olan [Teknik Yönlendirme Komitesi (TYK)][technical steering committee (tsc)] tarafından yönetilmektedir. TYK, diğer mevcut TYK üyeleri tarafından aday gösterilen aktif İş birlikçilerin bir alt kümesidir.
+Proje, projenin üst düzey rehberliğinden sorumlu olan [Teknik Yönlendirme Komitesi (TYK)][] tarafından yönetilmektedir. TYK, diğer mevcut TYK üyeleri tarafından aday gösterilen aktif İş birlikçilerin bir alt kümesidir.
[consensus seeking]: https://en.wikipedia.org/wiki/Consensus-seeking_decision-making
[readme.md]: https://github.com/nodejs/node/blob/main/README.md#current-project-team-members
diff --git a/apps/site/pages/tr/about/previous-releases.mdx b/apps/site/pages/tr/about/previous-releases.mdx
index cbbcd9b271da3..e8b13c47f847e 100644
--- a/apps/site/pages/tr/about/previous-releases.mdx
+++ b/apps/site/pages/tr/about/previous-releases.mdx
@@ -16,6 +16,10 @@ LTS yayın durumu "uzun vadeli destek" anlamına gelir ve genellikle kritik hata
Node.js sürüm takvimine ilişkin tüm ayrıntılar [GitHub'da](https://github.com/nodejs/release#release-schedule) mevcuttur.
+### Ticari Destek
+
+Bakım aşamasını geçmiş sürümler için ticari destek, OpenJS Ekosistem Sürdürülebilirlik Programı ortağımız [HeroDevs](https://herodevs.com/) aracılığıyla sağlanmaktadır.
+
## Bir sürüm dalının en son sürümünü mü arıyorsunuz?
diff --git a/apps/site/pages/uk/about/branding.mdx b/apps/site/pages/uk/about/branding.mdx
index 28175cd78649d..0d416c8a49ea4 100644
--- a/apps/site/pages/uk/about/branding.mdx
+++ b/apps/site/pages/uk/about/branding.mdx
@@ -9,6 +9,8 @@ layout: about
## Маскот Node.js®
+Дякуємо [Анджелі Анджеліні](https://www.linkedin.com/in/angeliningl) за дизайн та внесок у Rocket Turtle.
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
### Складений логотип Node.js®
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
### Значки JS
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/site/pages/uk/about/previous-releases.mdx b/apps/site/pages/uk/about/previous-releases.mdx
index 63f43ad408be1..38a9fddee6126 100644
--- a/apps/site/pages/uk/about/previous-releases.mdx
+++ b/apps/site/pages/uk/about/previous-releases.mdx
@@ -16,6 +16,10 @@ layout: about
Усі деталі, які стосуються розкладу релізів Node.js, доступні [на GitHub](https://github.com/nodejs/release#release-schedule).
+### Комерційна підтримка
+
+Комерційна підтримка для версій після фази підтримки доступна з нашим партнером програми OpenJS Ecosystem Sustainability [HeroDevs](https://herodevs.com/).
+
## Шукаєте останній реліз гілки версії?
diff --git a/apps/site/pages/uk/download/package-manager/current.mdx b/apps/site/pages/uk/download/package-manager/current.mdx
index b51fd9e8490ce..8b614025c7f37 100644
--- a/apps/site/pages/uk/download/package-manager/current.mdx
+++ b/apps/site/pages/uk/download/package-manager/current.mdx
@@ -13,9 +13,9 @@ subtitle: Завантажте Node.js так, як ви бажаєте.
Node.js містить .
-Читайте список змін для цієї версії
+Читайте список змін цієї версії.
-Читайте публікацію в блозі про цю версію
+Читайте публікацію в блозі про цю версію.
Дізнайтеся, як перевірити підписані SHASUMS
diff --git a/apps/site/pages/uk/download/package-manager/index.mdx b/apps/site/pages/uk/download/package-manager/index.mdx
index b51fd9e8490ce..d772ef049cc28 100644
--- a/apps/site/pages/uk/download/package-manager/index.mdx
+++ b/apps/site/pages/uk/download/package-manager/index.mdx
@@ -13,9 +13,9 @@ subtitle: Завантажте Node.js так, як ви бажаєте.
Node.js містить .
-Читайте список змін для цієї версії
+Читайте список змін цієї версії
-Читайте публікацію в блозі про цю версію
+Читайте публікацію в блозі про цю версію
Дізнайтеся, як перевірити підписані SHASUMS
diff --git a/apps/site/pages/uk/download/prebuilt-binaries/current.mdx b/apps/site/pages/uk/download/prebuilt-binaries/current.mdx
index 4f4a4e9045525..ee5f2d83f0638 100644
--- a/apps/site/pages/uk/download/prebuilt-binaries/current.mdx
+++ b/apps/site/pages/uk/download/prebuilt-binaries/current.mdx
@@ -5,7 +5,7 @@ subtitle: Завантажте Node.js так, як ви бажаєте.
---
-Мені потрібний Node.js для розрядності
+Мені потрібний Node.js для з архітектурою
@@ -13,9 +13,9 @@ subtitle: Завантажте Node.js так, як ви бажаєте.
Node.js містить .
-Читайте список змін для цієї версії
+Читайте список змін цієї версії
-Читайте публікацію в блозі про цю версію
+Читайте публікацію в блозі про цю версію
Дізнайтеся, як перевірити підписані SHASUMS
diff --git a/apps/site/pages/uk/download/prebuilt-binaries/index.mdx b/apps/site/pages/uk/download/prebuilt-binaries/index.mdx
index ea3e7f7417f79..0d0a6e3a5d189 100644
--- a/apps/site/pages/uk/download/prebuilt-binaries/index.mdx
+++ b/apps/site/pages/uk/download/prebuilt-binaries/index.mdx
@@ -5,7 +5,7 @@ subtitle: Завантажте Node.js так, як ви бажаєте.
---
-Мені потрібний Node.js для розрядності
+Мені потрібний Node.js для з архітектурою
@@ -13,9 +13,9 @@ subtitle: Завантажте Node.js так, як ви бажаєте.
Node.js містить .
-Читайте список змін для цієї версії.
+Читайте список змін цієї версії.
-Читайте публікацію в блозі про цю версію.
+Читайте публікацію в блозі про цю версію.
Дізнайтеся, як перевірити підписані SHASUMS.
diff --git a/apps/site/pages/uk/download/prebuilt-installer/current.mdx b/apps/site/pages/uk/download/prebuilt-installer/current.mdx
index 50abaaf235f48..05ba45d1fab18 100644
--- a/apps/site/pages/uk/download/prebuilt-installer/current.mdx
+++ b/apps/site/pages/uk/download/prebuilt-installer/current.mdx
@@ -5,7 +5,7 @@ subtitle: Завантажте Node.js так, як ви бажаєте.
---
-Мені потрібний Node.js для розрядності
+Мені потрібний Node.js для з архітектурою
@@ -13,9 +13,9 @@ subtitle: Завантажте Node.js так, як ви бажаєте.
Node.js містить .
-Читайте список змін для цієї версії
+Читайте список змін цієї версії
-Читайте публікацію в блозі про цю версію
+Читайте публікацію в блозі про цю версію
Дізнайтеся, як перевірити підписані SHASUMS
diff --git a/apps/site/pages/uk/download/prebuilt-installer/index.mdx b/apps/site/pages/uk/download/prebuilt-installer/index.mdx
index 22e5b7ca74dc8..2fcb5bd6067bb 100644
--- a/apps/site/pages/uk/download/prebuilt-installer/index.mdx
+++ b/apps/site/pages/uk/download/prebuilt-installer/index.mdx
@@ -5,7 +5,7 @@ subtitle: Завантажте Node.js так, як ви бажаєте.
---
-Мені потрібний Node.js для розрядності
+Мені потрібний Node.js для з архітектурою
@@ -13,9 +13,9 @@ subtitle: Завантажте Node.js так, як ви бажаєте.
Node.js містить .
-Читайте список змін для цієї версії
+Читайте список змін цієї версії.
-Читайте публікацію в блозі про цю версію
+Читайте публікацію в блозі про цю версію.
Дізнайтеся, як перевірити підписані SHASUMS
diff --git a/apps/site/pages/uk/download/source-code/current.mdx b/apps/site/pages/uk/download/source-code/current.mdx
index 298aa7b150d19..2d2846ddc04c7 100644
--- a/apps/site/pages/uk/download/source-code/current.mdx
+++ b/apps/site/pages/uk/download/source-code/current.mdx
@@ -13,9 +13,9 @@ subtitle: Завантажте Node.js так, як ви бажаєте.
Node.js містить .
-Читайте список змін для цієї версії
+Читайте список змін цієї версії.
-Читайте публікацію в блозі про цю версію
+Читайте публікацію в блозі про цю версію.
Дізнайтеся, як перевірити підписані SHASUMS
diff --git a/apps/site/pages/uk/download/source-code/index.mdx b/apps/site/pages/uk/download/source-code/index.mdx
index 298aa7b150d19..2d2846ddc04c7 100644
--- a/apps/site/pages/uk/download/source-code/index.mdx
+++ b/apps/site/pages/uk/download/source-code/index.mdx
@@ -13,9 +13,9 @@ subtitle: Завантажте Node.js так, як ви бажаєте.
Node.js містить .
-Читайте список змін для цієї версії
+Читайте список змін цієї версії.
-Читайте публікацію в блозі про цю версію
+Читайте публікацію в блозі про цю версію.
Дізнайтеся, як перевірити підписані SHASUMS
diff --git a/apps/site/pages/uk/index.mdx b/apps/site/pages/uk/index.mdx
index fb76e0634cb05..2b65d70048c87 100644
--- a/apps/site/pages/uk/index.mdx
+++ b/apps/site/pages/uk/index.mdx
@@ -4,131 +4,135 @@ layout: home
---
-
-
-
-
Запускайте JavaScript будь-де
-
- Node.js® — це безплатне, кросплатформне середовище виконання JavaScript із відкритим кодом,
- яке дозволяє розробникам створювати сервери, вебзастосунки, інструменти командного рядка та
- скрипти.
-
-
-
-
-
- {({ release }) => (
- <>
- Завантажити Node.js (LTS)
-
- Завантажує Node.js {release.versionWithPrefix}
- 1 із довгостроковою підтримкою.
- Node.js також можна встановити через менеджери пакетів.
-
- >
- )}
-
-
-
- {({ release }) => (
+
+
+
+
Запускайте JavaScript будь-де
+
+Node.js® — це безплатне, кросплатформне середовище виконання JavaScript із відкритим кодом,
+яке дозволяє розробникам створювати сервери, вебзастосунки, інструменти командного рядка та скрипти.
+
+
+
+
+
+ {({ release }) => (
+ <>
+ Завантажити Node.js (LTS)
- Хочете отримати нові функції швидше?
- Завантажте Node.js {release.versionWithPrefix}
- 1.
+ Завантажує Node.js {release.versionWithPrefix}
+ 1 із довгостроковою підтримкою.
+ Node.js також можна встановити через менеджери пакетів.
- )}
-
-
-
diff --git a/apps/site/pages/es/about/get-involved/collab-summit.md b/apps/site/pages/es/about/get-involved/collab-summit.md
new file mode 100644
index 0000000000000..ec5410c19d26a
--- /dev/null
+++ b/apps/site/pages/es/about/get-involved/collab-summit.md
@@ -0,0 +1,17 @@
+---
+title: Cumbre de Colaboradores
+layout: about
+---
+
+# Cumbre de Colaboradores
+
+La Cumbre de Colaboración de Node.js es una no-conferencia que reúne a contribuyentes actuales y potenciales para discutir sobre Node.js con una colaboración activa, educación y intercambio de conocimientos. Equipos, grupos de trabajo y contribuyentes de la comunidad se reúnen dos veces al año para tener discusiones que ayuden en la toma de decisiones, además de trabajar en esfuerzos emocionantes que desean impulsar en persona.
+
+## ¿Quién asiste?
+
+A la Cumbre de Colaboración asisten principalmente contribuyentes existentes y miembros de la comunidad, pero también da la bienvenida a aquellos que aún no son contribuyentes y desean unirse. Si eres nuevo o nueva contribuyendo a Node.js, la Cumbre de Colaboración puede ser una buena oportunidad para ayudarle a aprender lo que está sucediendo dentro de la comunidad y contribuir con las habilidades que tiene y le gustaría perfeccionar.
+
+Antes de la cumbre, los contribuyentes y miembros de la comunidad envían propuestas de sesiones para
+crear una agenda. Los asistentes pueden familiarizarse con la sesión antes llegar al sitio, tener conversaciones generales con los colaboradores y luego introducirse en sesiones. También habrá muchas oportunidades para charlas de pasillo y lluvias de ideas.
+
+Para obtener información sobre las próximas y pasadas Cumbres de Colaboración, consulta el [repositorio de la Cumbre](https://github.com/openjs-foundation/summit). Echa un vistazo a los [issues creadas](https://github.com/nodejs/summit/issues) donde se comparte lo que los contribuidores y miembros de la comunidad proponen discutir en persona.
diff --git a/apps/site/pages/es/about/get-involved/events.mdx b/apps/site/pages/es/about/get-involved/events.mdx
new file mode 100644
index 0000000000000..e41d8fad2b28f
--- /dev/null
+++ b/apps/site/pages/es/about/get-involved/events.mdx
@@ -0,0 +1,16 @@
+---
+title: Próximos Eventos
+layout: about
+---
+
+## Próximos Eventos
+
+Los eventos de Node.js son abiertos y están disponibles a todo el público. Todo el mundo es bienvenido para unirse y participar.
+
+### Próximos Eventos de Node.js®
+
+El proyecto Node.js celebra numerosas reuniones a lo largo del año para discutir y planificar aspectos del proyecto.
+
+Los siguientes eventos se celebrarán en los próximos 7 días.
+
+
diff --git a/apps/site/pages/es/about/get-involved/index.md b/apps/site/pages/es/about/get-involved/index.md
new file mode 100644
index 0000000000000..b54e635612ce6
--- /dev/null
+++ b/apps/site/pages/es/about/get-involved/index.md
@@ -0,0 +1,36 @@
+---
+title: Participar
+layout: about
+---
+
+# Participar
+
+Si estás interesado en colaborar con la comunidad de Node.js, hay muchas maneras de hacerlo. El proyecto de Node.js es una comunidad grande y diversa, y hay muchas formas de contribuir, más allá de solo escribir código.
+
+## Discusión de la Comunidad
+
+- La [lista de issues de GitHub](https://github.com/nodejs/node/issues) es el lugar para discutir las características centrales de Node.js, y si tienes preguntas sobre Node.js, puedes usar las [discusiones de GitHub](https://github.com/orgs/nodejs/discussions).
+- El repositorio [`nodejs/help`](https://github.com/nodejs/help/issues) es el lugar para hacer preguntas sobre Node.js.
+- La cuenta oficial de Node.js en Twitter es [nodejs](https://twitter.com/nodejs).
+- El [calendario del proyecto Node.js](https://nodejs.org/calendar) con todos los encuentros públicos.
+
+## Material de Aprendizaje
+
+Si estás buscando aprender más sobre Node.js, hay muchos recursos disponibles para ti.
+
+- [Sección oficial de aprendizaje](https://nodejs.org/es/learn/) de la web de Node.js.
+- [Documentación oficial de referencia de la API](https://nodejs.org/api/).
+- [NodeSchool.io](https://nodeschool.io/) te enseñará conceptos de Node.js a través de juegos interactivos en la línea de comandos.
+- [La etiqueta de Node.js en Stack Overflow](https://stackoverflow.com/questions/tagged/node.js) recopila nueva información a diario.
+- [La etiqueta de Node.js en la comunidad de DEV](https://dev.to/t/node) es un lugar donde compartir proyectos de Node.js, artículos y tutoriales, así como comenzar debates y pedir opinión sobre temas relacionados con Node.js. Desarrolladores y desarrolladoras de todos los niveles son bienvenidos para formar parte.
+- La [comunidad de Node.js en Reddit](https://www.reddit.com/r/node) es un lugar para compartir proyectos, artículos y tutoriales de Node.js, así como para iniciar discusiones y pedir retroalimentación sobre temas relacionados con Node.js. Desarrolladores de todos los niveles de habilidad son bienvenidos a participar.
+
+## Áreas de Discusión No Oficiales
+
+Si estás buscando un lugar más informal para discutir sobre Node.js, hay varias áreas de discusión no oficiales. Ten en cuenta que estas no son respaldadas oficialmente por el proyecto de Node.js. También sigue su respectivo código de conducta/reglas.
+
+- [Node Slackers](https://www.nodeslackers.com/) es una comunidad de slack enfocada en Node.js.
+- [OpenJSF Slack](https://slack-invite.openjsf.org/) es un espacio de trabajo en Slack para la Fundación OpenJS. Hay varios canales relacionados con Node.js. _(los canales con el prefijo `#nodejs-` están relacionados con el proyecto)_
+- [Nodeiflux](https://discordapp.com/invite/vUsrbjd) es una comunidad amistosa de desarrolladores y desarrolladoras backend de Node.js que se ayudan mutuamente en Discord.
+- [ES Community](https://discord.gg/zJsuc6vvhn) es una comunidad de Discord para desarrolladores de JavaScript que hablan francés.
+- `irc.libera.chat` en el canal `#node.js` con un [cliente IRC](https://es.wikipedia.org/wiki/Comparaci%C3%B3n_de_clientes_de_Internet_Relay_Chat) o conéctate en tu navegador web al canal usando [un cliente web](https://kiwiirc.com/nextclient/).
diff --git a/apps/site/pages/es/about/governance.md b/apps/site/pages/es/about/governance.md
new file mode 100644
index 0000000000000..92eca9e99ac0e
--- /dev/null
+++ b/apps/site/pages/es/about/governance.md
@@ -0,0 +1,31 @@
+---
+title: Gobernanza del Proyecto
+layout: about
+---
+
+# Gobernanza del Proyecto
+
+## Proceso de Búsqueda de Consenso
+
+El proyecto Node.js sigue un modelo de toma de decisiones basado en la [Búsqueda de Consenso][].
+
+## Colaboradores
+
+El repositorio principal de GitHub [nodejs/node][] es mantenido por los Colaboradores, quienes son nominados por otros Colaboradores existentes de manera continua.
+
+Las personas que realizan contribuciones significativas y valiosas se convierten en Colaboradores y se les otorga permisos de escritura al proyecto. Estas personas son identificadas por otros Colaboradores y su nominación es discutida con los Colaboradores existentes.
+
+Para ver el listado actual de Colaboradores/as, revisa el [README.md][] del proyecto.
+
+La guía para Colaboraciones es mantenida en [collaborator-guide.md][].
+
+## Comité Directivo Técnico
+
+El proyecto está gobernado por el [Comité Técnico de Dirección (TSC)][] que es responsable de la orientación de alto nivel del proyecto. El TSC es un subconjunto de Colaboradores activos que son nominados por otros miembros existentes del TSC.
+
+[consensus seeking]: https://en.wikipedia.org/wiki/Consensus-seeking_decision-making
+[readme.md]: https://github.com/nodejs/node/blob/main/README.md#current-project-team-members
+[tsc]: https://github.com/nodejs/TSC
+[technical steering committee (tsc)]: https://github.com/nodejs/TSC/blob/main/TSC-Charter.md
+[collaborator-guide.md]: https://github.com/nodejs/node/blob/main/doc/contributing/collaborator-guide.md
+[nodejs/node]: https://github.com/nodejs/node
diff --git a/apps/site/pages/es/about/index.mdx b/apps/site/pages/es/about/index.mdx
new file mode 100644
index 0000000000000..8489ee76f5426
--- /dev/null
+++ b/apps/site/pages/es/about/index.mdx
@@ -0,0 +1,63 @@
+---
+title: Sobre Node.js®
+layout: about
+---
+
+Sobre Node.js®
+
+Concebido como un entorno de ejecución JavaScript asíncrono basado en eventos, Node.js está diseñado para construir aplicaciones de red escalables. En el siguiente ejemplo de 'hola mundo', se pueden manejar muchas conexiones de manera concurrente. Por cada conexión el callback sera ejecutado, sin embargo si no hay trabajo que hacer, Node.js entrará en reposo.
+
+```cjs
+const { createServer } = require('node:http');
+
+const hostname = '127.0.0.1';
+const port = 3000;
+
+const server = createServer((req, res) => {
+ res.statusCode = 200;
+ res.setHeader('Content-Type', 'text/plain');
+ res.end('Hello World');
+});
+
+server.listen(port, hostname, () => {
+ console.log(`Server running at http://${hostname}:${port}/`);
+});
+```
+
+```mjs
+import { createServer } from 'node:http';
+
+const hostname = '127.0.0.1';
+const port = 3000;
+
+const server = createServer((req, res) => {
+ res.statusCode = 200;
+ res.setHeader('Content-Type', 'text/plain');
+ res.end('Hello World');
+});
+
+server.listen(port, hostname, () => {
+ console.log(`Server running at http://${hostname}:${port}/`);
+});
+```
+
+Esto contrasta con el modelo de concurrencia más común de hoy en día, en el que se emplean hilos del Sistema Operativo. Las redes basadas en hilos son relativamente ineficientes y muy difíciles de usar. Además, los usuarios de Node.js están libres de preocuparse por el bloqueo del proceso, ya que no existe. Casi ninguna función en Node.js realiza I/O directamente, por lo que el proceso nunca se bloquea. Por ello, es muy propicio desarrollar sistemas escalables en Node.js.
+
+Si algo de esta explicación le resulta poco familiar, aquí hay un artículo completo sobre ello [Bloqueante vs. No-Bloqueante][].
+
+---
+
+Node.js es similar en diseño a sistemas como Ruby y está influenciado por ellos.
+[Máquina de eventos][] y [Twisted][] de Python. Node.js lleva el modelo de eventos un poco más allá. Presenta un bucle de eventos como una construcción en tiempo de ejecución en lugar de una biblioteca. En otros sistemas, siempre hay una llamada de bloqueo para iniciar el ciclo de eventos.
+Normalmente, el comportamiento se define mediante devoluciones de llamada al principio de un script y, al final, se inicia un servidor mediante una llamada de bloqueo como `EventMachine::run()`.
+En Node.js, no existe tal llamada de inicio del ciclo de eventos. Node.js simplemente ingresa al bucle de eventos después de ejecutar el script de entrada. Node.js sale del bucle de eventos cuando no hay más devoluciones de llamada para realizar. Este comportamiento es similar al JavaScript del navegador: El bucle de eventos está oculto para el usuario.
+
+HTTP es un ciudadano de primera clase en Node.js, diseñado teniendo en cuenta la transmisión y la baja latencia. Esto hace que Node.js sea muy adecuado para la base de una biblioteca o framework web.
+
+El hecho de que Node.js esté diseñado sin hilos no significa que no puedas aceptar la ventaja de múltiples núcleos en su entorno. Los procesos secundarios se pueden generar utilizando nuestra API [`child_process.fork()`][] y están diseñados para que sea fácil comunicarse con ellos. Construido sobre esa misma interfaz se encuentra el módulo [`cluster`][], que le permite compartir sockets entre procesos para permitir el equilibrio de carga en sus núcleos.
+
+[bloqueante vs no-bloqueante]: /learn/asynchronous-work/overview-of-blocking-vs-non-blocking
+[`child_process.fork()`]: https://nodejs.org/api/child_process.html
+[`cluster`]: https://nodejs.org/api/cluster.html
+[máquina de eventos]: https://github.com/eventmachine/eventmachine
+[twisted]: https://twisted.org/
diff --git a/apps/site/pages/es/about/previous-releases.mdx b/apps/site/pages/es/about/previous-releases.mdx
new file mode 100644
index 0000000000000..d13f8b51ac065
--- /dev/null
+++ b/apps/site/pages/es/about/previous-releases.mdx
@@ -0,0 +1,25 @@
+---
+title: Versiones de Node.js
+layout: about
+---
+
+Versiones de Node.js
+
+Las versiones principales de Node.js entran en estado de lanzamiento _Actual_ durante seis meses, lo que les da a los autores de bibliotecas tiempo para agregarles manutención.
+Después de seis meses, las versiones impares (9, 11, etc.) dejan de ser compatibles y las versiones pares (10, 12, etc.) pasan al estado _LTS Activo_ y están listas para uso general.
+El estado de la versión _LTS_ es "soporte a largo plazo", que normalmente garantiza que los errores críticos se corregirán durante un total de 30 meses.
+Las aplicaciones de producción solo deben usar versiones _LTS Activo_ o _LTS en Mantenimiento_.
+
+## Calendario de Lanzamiento
+
+
+
+Los detalles completos sobre el calendario de lanzamiento de Node.js están disponibles [en GitHub](https://github.com/nodejs/release#release-schedule).
+
+### Soporte Comercial
+
+El soporte comercial para versiones posteriores a la fase de Mantenimiento está disponible a través de nuestro socio del Programa de Sostenibilidad del Ecosistema OpenJS, [HeroDevs.](https://herodevs.com/).
+
+## ¿Buscando las últimas versiones de una rama específica?
+
+
diff --git a/apps/site/pages/es/about/security-reporting.mdx b/apps/site/pages/es/about/security-reporting.mdx
new file mode 100644
index 0000000000000..012bfa538e2ff
--- /dev/null
+++ b/apps/site/pages/es/about/security-reporting.mdx
@@ -0,0 +1,67 @@
+---
+title: Reportes de Seguridad
+layout: about
+---
+
+Reportes de Seguridad
+
+Para más detalles de las Políticas de Seguridad activas, revise esta [página](https://github.com/nodejs/node/security/policy).
+
+## Reportando errores en Node.js
+
+Reporta errores de seguridad de Node.js atreves de [HackerOne](https://hackerone.com/nodejs).
+
+Su informe será reconocido dentro de 5 días, y recibirás una respuesta más detallada a tu informe dentro de 10 días donde indicara los próximos pasos para manejar su entrega.
+
+Después de la respuesta inicial a tu informe, el equipo de seguridad se esforzará por mantenerte informado sobre el progreso hacia una solución y el anuncio completo, y puede solicitar información adicional u orientación sobre el problema reportado.
+
+### Programa de recompensas por errores de Node.js
+
+El proyecto Node.js participa en un programa oficial de recompensas por errores para investigadores de seguridad y divulgaciones públicas responsables. El programa se gestiona a través de la plataforma HackerOne. Consulte [https://hackerone.com/nodejs](https://hackerone.com/nodejs) por más detalles.
+
+## Reportar un error en un módulo de terceros
+
+Los errores de seguridad dentro de módulos de terceros deben ser reportados a sus respectivos
+mantenedores.
+
+## Política de divulgación
+
+Aquí está la política de divulgación de seguridad para Node.js:
+
+El informe de seguridad es recibido y se asigna a un responsable principal. Esta persona coordinará el proceso de corrección y lanzamiento. El problema es confirmado y se determina una lista de todas las versiones afectadas. Se audita el código para encontrar posibles problemas similares. Se preparan correcciones para todas las versiones que aún están en mantenimiento. Estas correcciones no se comprometen al repositorio público, sino que se mantienen localmente a la espera del anuncio.
+
+Se elige una fecha de embargo sugerida para esta vulnerabilidad y un CVE (Vulnerabilidades y Exposiciones Comunes (CVE®)) será solicitado para la vulnerabilidad.
+
+En la fecha de embargo, se envía una copia del anuncio a la lista de correo de seguridad de Node.js. Los cambios se suben al repositorio público y se despliegan nuevas versiones en nodejs.org. Dentro de las 6 horas posteriores a que se notifique a la lista de correo, se publicará una copia del aviso en el blog de Node.js.
+
+Típicamente la fecha de embargo será fijada 72 horas desde la creación del CVE. Sin embargo, esto puede variar dependiendo de la severidad del error o la dificultad en aplicar la solución.
+
+Este proceso puede tomar algún tiempo, especialmente cuando se requiere coordinación con los mantenedores de otros proyectos. Cada esfuerzo posible se hará para encargarse del error en la forma más oportuna posible, sin embargo, es importante que sigamos el proceso descrito arriba, para asegurarse que la divulgación sea manejada de una manera consistente.
+
+## Recibiendo actualizaciones de seguridad
+
+Las notificaciones de seguridad se distribuirán mediante los siguientes métodos.
+
+[Grupo de Google](https://groups.google.com/group/nodejs-sec)
+[Blog de Node.js](/blog)
+
+## Comentarios sobre esta política
+
+Si tienes sugerencias sobre cómo podría mejorarse este proceso, por favor, envía una
+[pull request](https://github.com/nodejs/nodejs.org) o
+[rellena un issue](https://github.com/nodejs/security-wg/issues/new) para discutirlo.
+
+## Mejores Prácticas de la OpenSSF
+
+
+
+
+
+La [Insignia de Buenas Prácticas](https://github.com/coreinfrastructure/best-practices-badge) de la Fundación de Seguridad del Software Abierto (OpenSSF) es una manera en que los proyectos de Software Libre y de Código Abierto (FLOSS) pueden mostrar que siguen las mejores prácticas. Los proyectos pueden auto-certificarse voluntariamente sobre cómo siguen cada buena práctica. Los consumidores de la insignia pueden evaluar rápidamente qué proyectos FLOSS siguen las mejores prácticas y, como resultado, tienen más probabilidades de producir software seguro de alta calidad.
diff --git a/apps/site/pages/es/download/package-manager/all.md b/apps/site/pages/es/download/package-manager/all.md
new file mode 100644
index 0000000000000..e3d87b3af2a9d
--- /dev/null
+++ b/apps/site/pages/es/download/package-manager/all.md
@@ -0,0 +1,393 @@
+---
+layout: article
+title: Instalando Node.js mediante un gestor de paquetes
+---
+
+# Instalando Node.js mediante un Gestor de Paquetes
+
+> Los paquetes de esta página son mantenidos y respaldados por sus respectivos empaquetadores, **no** por el equipo central de Node.js. Informe cualquier problema que encuentre al responsable del paquete. Si resulta que su problema es un error en el propio Node.js, el responsable del mantenimiento informará el problema al equipo principal.
+
+## Alpine Linux
+
+Las versiones LTS de Node.js y los paquetes de npm están disponibles en el Repositorio Principal.
+
+```bash
+apk add nodejs npm
+```
+
+La versión actual de Node.js puede ser instalada desde el Repositorio de la Comunidad.
+
+```bash
+apk add nodejs-current
+```
+
+## Android
+
+El soporte para Android todavía es experimental en Node.js, por lo que los desarrolladores de Node.js aún no proporcionan los binarios precompilados.
+
+Sin embargo, hay algunas soluciones de terceros. Por ejemplo, la comunidad [Termux](https://termux.com/) que proporciona un emulador de terminal y un entorno Linux para Android, así como un administrador de paquetes propio y una [amplia colección](https://github.com/termux/termux-packages) de aplicaciones precompiladas. Este comando en la aplicación Termux instalará la última versión disponible de Node.js:
+
+```bash
+pkg install nodejs
+```
+
+Actualmente, los binarios de Node.js para Termux están enlazados contra `system-icu` (dependiente del paquete `libicu`).
+
+## Arch Linux
+
+Los paquetes para Node.js y npm están disponibles en el repositorio de la comunidad.
+
+```bash
+pacman -S nodejs npm
+```
+
+## CentOS, Fedora y Red Hat Enterprise Linux
+
+Node.js está disponible como módulo llamado `nodejs` en CentOS/RHEL 8 y Fedora.
+
+```bash
+dnf module install nodejs:
+```
+
+donde `` corresponde a la versión mayor de Node.js.
+Para ver una lista de las versiones disponibles:
+
+```bash
+dnf module list nodejs
+```
+
+Por ejemplo, para instalar Node.js 18:
+
+```bash
+dnf module install nodejs:18/common
+```
+
+### Alternativas
+
+Estos recursos proporcionan paquetes compatibles con CentOS, Fedora, y RHEL.
+
+- [Node.js snaps](#snap) mantenido y soportado en https://github.com/nodejs/snap
+- [Distribuciones de binarios de Node.js](#debian-and-ubuntu-based-linux-distributions) son mantenidas y soportadas por [NodeSource](https://github.com/nodesource/distributions)
+
+## Distribuciones Linux basadas en Debian y Ubuntu
+
+Las [distribuciones de binarios Node.js](https://github.com/nodesource/distributions) están disponibles desde NodeSource.
+
+### Alternativas
+
+Los paquetes compatibles con distribuciones Linux basadas en Debian y Ubuntu están disponibles a través de [Node.js snaps](#snap).
+
+## Exherbo Linux
+
+Los paquetes de Node.js y npm están disponibles en el [repositorio arbor](https://gitlab.exherbo.org/exherbo/arbor/-/tree/master/packages/dev-lang/node).
+
+```bash
+cave resolve -x node
+```
+
+## fnm
+
+Un gestor de versiones de Node.js rápido y simple, construido en Rust, utilizado para gestionar múltiples versiones de Node.js lanzadas. Te permite realizar operaciones como instalar, desinstalar, cambiar versiones de Node automáticamente según el directorio actual, etc.
+Para instalar fnm, utiliza este [script de instalación](https://github.com/Schniz/fnm#using-a-script-macoslinux).
+
+fnm tiene soporte multiplataforma (macOS, Windows, Linux) y todas las shells populares (Bash, Zsh, Fish, PowerShell, símbolo de la línea de comandos de Windows).
+fnm está diseñado teniendo en cuenta la velocidad y la compatibilidad con archivos `.node-version` y `.nvmrc`.
+
+## FreeBSD
+
+La versión más reciente de Node.js está disponible a través del puerto [www/node](https://www.freshports.org/www/node).
+
+Instala el paquete de binarios con [pkg](https://www.freebsd.org/cgi/man.cgi?pkg):
+
+```bash
+pkg install node
+```
+
+O compílalo por tu cuenta utilizando [ports](https://www.freebsd.org/cgi/man.cgi?ports):
+
+```bash
+cd /usr/ports/www/node && make install
+```
+
+## Gentoo
+
+Node.js está disponible en el árbol de portage.
+
+```bash
+emerge nodejs
+```
+
+## IBM i
+
+Las versiones LTS de Node.js están disponibles en IBM y están disponibles a través de [el administrador de paquetes 'yum'](https://ibm.biz/ibmi-rpms). El nombre del paquete es `nodejs` seguido del número de versión principal (por ejemplo, `nodejs18`, `nodejs20`, etc.)
+
+Para instalar Node.js 20.x desde la línea de comandos, ejecute lo siguiente como usuario con autoridad especial:
+
+```bash
+yum install nodejs20
+```
+
+Node.js también se puede instalar con el producto IBM i Access Client Solutions. Consulte [este documento de soporte](http://www-01.ibm.com/support/docview.wss?uid=nas8N1022619) para obtener más detalles
+
+## macOS
+
+Descarga el [Instalador de macOS](/#home-downloadhead) directamente desde la web de [nodejs.org](https://nodejs.org/).
+
+_Si quieres descargar el paquete con bash:_
+
+```bash
+curl "https://nodejs.org/dist/latest/$(curl -s https://nodejs.org/dist/latest/ | grep "pkg" | cut -d'"' -f 2)" -o "$HOME/Downloads/node-latest.pkg" && sudo installer -store -pkg "$HOME/Downloads/node-latest.pkg" -target "/"
+```
+
+### Alternativas
+
+Utiliza **[Homebrew](https://brew.sh/)**:
+
+```bash
+brew install node
+```
+
+Utilizando **[MacPorts](https://www.macports.org/)**:
+
+```bash
+port install nodejs
+
+# Example
+port install nodejs7
+```
+
+Utilizando **[pkgsrc](https://pkgsrc.joyent.com/install-on-macos/)**:
+
+Instala el paquete de binarios:
+
+```bash
+pkgin -y install nodejs
+```
+
+O construye manualmente desde pkgsrc:
+
+```bash
+cd pkgsrc/lang/nodejs && bmake install
+```
+
+## n
+
+`n` es un administrador de versiones de Node.js fácil de usar para Mac y Linux. Especifique la versión de destino para instalar utilizando una sintaxis enriquecida o selecciónela de un menú de versiones descargadas previamente. Las versiones se instalan en todo el sistema o en todo el usuario y, para un uso más específico, puede ejecutar una versión directamente desde las descargas en caché.
+
+Visita la [página principal](https://github.com/tj/n) para ver los métodos de instalación (bootstrap, npm, Homebrew, third-party), y todos los detalles de uso.
+
+Si ya tienes `npm`, entonces instala `n` y a continuación obtener la última versión LTS de `node` es tan simple como:
+
+```
+npm install -g n
+n lts
+```
+
+## NetBSD
+
+Node.js está disponible en el árbol de pkgsrc:
+
+```bash
+cd /usr/pkgsrc/lang/nodejs && make install
+```
+
+O instala un paquete binario (si está disponible para tu plataforma) utilizando pkgin:
+
+```bash
+pkgin -y install nodejs
+```
+
+## Nodenv
+
+`nodenv` es un administrador de versiones de node liviano, similar a `nvm`. Es simple y predecible. Un rico ecosistema de complementos le permite adaptarlo a sus necesidades. Utilice `nodenv` para elegir una versión de Node para su aplicación y garantizar que su entorno de desarrollo coincida con la producción.
+
+Las instrucciones de instalación de Nodenv están mantenidas [en su página de Github](https://github.com/nodenv/nodenv#installation). Por favor, visita esta página para asegurarte de que sigues los pasos de instalación de la última versión.
+
+## nvm
+
+Node Version Manager es un script de bash que se utiliza para administrar múltiples versiones publicadas de Node.js. Eso permite realizar operaciones como instalar, desinstalar, cambiar de versión, etc.
+Para instalar nvm, utilice este [script de instalación](https://github.com/nvm-sh/nvm#install--update-script).
+
+En sistemas Unix / OS X, Node.js compilado desde el código fuente puede instalarse usando [nvm](https://github.com/creationix/nvm) instalándolo en la ubicación que nvm espera:
+
+```bash
+env VERSION=`python tools/getnodeversion.py` make install DESTDIR=`nvm_version_path v$VERSION` PREFIX=""
+```
+
+Después de esto, puedes usar `nvm` para cambiar entre versiones publicadas y versiones
+compiladas desde la fuente.
+Por ejemplo, si la versión de Node.js es v8.0.0-pre:
+
+```bash
+nvm use 8
+```
+
+Una vez que salga el lanzamiento oficial, querrás desinstalar la versión creada desde la fuente:
+
+```bash
+nvm uninstall 8
+```
+
+## nvs
+
+#### Windows
+
+El administrador de versiones `nvs` es multiplataforma y se puede usar en sistemas Windows, macOS y tipo Unix
+
+Para instalar `nvs` en Windows, vaya a la [página de lanzamiento](https://github.com/jasongin/nvs/releases) aquí y descargue el archivo de instalación MSI de la última versión.
+
+También puedes utilizar `chocolatey` para instalarlo:
+
+```bash
+choco install nvs
+```
+
+#### macOS,UnixLike
+
+Puede encontrar la documentación sobre los pasos de instalación de `nvs` en sistemas tipo macOS/Unix [aquí](https://github.com/jasongin/nvs/blob/master/doc/SETUP.md#mac-linux)
+
+#### Uso
+
+Después de esto, puedes usar `nvs` para cambiar entre diferentes versiones de node.
+
+Para añadir la última versión de node:
+
+```bash
+nvs add latest
+```
+
+O para añadir la última versión LTS de node:
+
+```bash
+nvs add lts
+```
+
+Después ejecuta el comando `nvs use` para añadir una versión de node a tu `PATH` en la shell actual:
+
+```bash
+$ nvs use lts
+PATH -= %LOCALAPPDATA%\nvs\default
+PATH += %LOCALAPPDATA%\nvs\node\14.17.0\x64
+```
+
+Para añadirlo al `PATH` permanentemente, utiliza `nvs link`:
+
+```bash
+nvs link lts
+```
+
+## OpenBSD
+
+Node.js está disponible a través del sistema de puertos.
+
+```bash
+/usr/ports/lang/node
+```
+
+Utilizando [pkg_add](https://man.openbsd.org/OpenBSD-current/man1/pkg_add.1) en OpenBSD:
+
+```bash
+pkg_add node
+```
+
+## openSUSE y SLE
+
+Node.js está disponible en los repositorios principales en los siguientes paquetes:
+
+- **openSUSE Leap 15.2**: `nodejs10`, `nodejs12`, `nodejs14`
+- **openSUSE Tumbleweed**: `nodejs20`
+- **SUSE Linux Enterprise Server (SLES) 12**: `nodejs10`, `nodejs12`, and `nodejs14`
+ (El módulo de Web y Scripting debe estar [habilitado](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/12-SP5/#intro-modulesExtensionsRelated).)
+- **SUSE Linux Enterprise Server (SLES) 15 SP2**: `nodejs10`, `nodejs12`, and `nodejs14`
+ (El módulo de Web y Scripting debe estar [habilitado](https://www.suse.com/releasenotes/x86_64/SUSE-SLES/15/#Intro.Module).)
+
+Por ejemplo, para instalar Node.js 14.x en openSUSE Leap 15.2, ejecute lo siguiente como root:
+
+```bash
+zypper install nodejs14
+```
+
+Diferentes versiones mayores de Node pueden ser instaladas y utilizadas de forma concurrente.
+
+## SmartOS e illumos
+
+Las imágenes de SmartOS vienen con pkgsrc preinstalado. En otras distribuciones de illusmos, primero instale **[pkgsrc](https://pkgsrc.joyent.com/install-on-illumos/)**, luego podrá instalar el paquete binario normalmente:
+
+```bash
+pkgin -y install nodejs
+```
+
+O construye manualmente desde pkgsrc:
+
+```bash
+cd pkgsrc/lang/nodejs && bmake install
+```
+
+## Snap
+
+[Node.js snaps](https://github.com/nodejs/snap) están disponibles como [`node`](https://snapcraft.io/node) en la tienda Snap.
+
+## Solus
+
+Solus proporciona Node.js en su repositorio principal.
+
+```bash
+sudo eopkg install nodejs
+```
+
+## vfox
+
+Un gestor de versiones multi-plataforma(Windows, macOS, Linux) y **extensible**.
+
+Te permite tener **diferentes versiones para diferentes proyectos**, **diferentes versiones para diferentes shells**, y cambiar automáticamente las versiones de Node según el directorio actual, etc.
+
+Soporta todas las shells populares (Bash, Zsh, Fish, PowerShell, Clink, Cmder).
+
+Consulta el [inicio rápido](https://vfox.lhan.me/guides/quick-start.html) para usar vfox rápidamente y todos los detalles de uso.
+
+## Void Linux
+
+Void Linux incluye la versión estable de Node.js en el repositorio principal.
+
+```bash
+xbps-install -Sy nodejs
+```
+
+## Windows
+
+Descarga el [Instalador de Windows](/#home-downloadhead) directamente desde la web de [nodejs.org](https://nodejs.org/).
+
+### Alternativas
+
+Usando **[Winget](https://aka.ms/winget-cli)**:
+
+```bash
+winget install OpenJS.NodeJS
+# or for LTS
+winget install OpenJS.NodeJS.LTS
+```
+
+Después de ejecutar uno de los dos comandos anteriores, puede ser necesario reiniciar el emulador de terminal antes de que el comando CLI `node` esté disponible.
+
+Usando **[Chocolatey](https://chocolatey.org/)**:
+
+```bash
+cinst nodejs
+# or for full install with npm
+cinst nodejs.install
+```
+
+Usando **[Scoop](https://scoop.sh/)**:
+
+```bash
+scoop install nodejs
+# or for LTS
+scoop install nodejs-lts
+```
+
+## z/OS
+
+IBM® SDK para Node.js - z/OS® Está disponible en dos formatos de instalación, SMP/E y PAX. Seleccione el formato de instalación que le corresponda:
+
+- [Instalando y configurando la edición SMP/E de Node.js en z/OS](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-smpe-edition)
+- [Instalando y configurando la edición PAX de Node.js en z/OS](https://www.ibm.com/docs/en/sdk-nodejs-zos/14.0?topic=configuring-installing-pax-edition)
diff --git a/apps/site/pages/es/download/package-manager/current.mdx b/apps/site/pages/es/download/package-manager/current.mdx
new file mode 100644
index 0000000000000..3146d367bf9da
--- /dev/null
+++ b/apps/site/pages/es/download/package-manager/current.mdx
@@ -0,0 +1,24 @@
+---
+layout: download
+title: Descargar Node.js®
+subtitle: Descarga Node.js de la forma que quieras.
+---
+
+
+Instalar Node.js en utilizando
+
+
+
+
+
+Node.js incluye .
+
+Lee el historial para esta versión.
+
+Lee el artículo del blog para esta versión.
+
+Aprende a cómo verificar la firma SHASUMS
+
+Comprueba otros gestores de paquetes soportados por la comunidad
+
+
diff --git a/apps/site/pages/es/download/package-manager/index.mdx b/apps/site/pages/es/download/package-manager/index.mdx
new file mode 100644
index 0000000000000..52f4acbabc1a9
--- /dev/null
+++ b/apps/site/pages/es/download/package-manager/index.mdx
@@ -0,0 +1,24 @@
+---
+layout: download
+title: Descargar Node.js®
+subtitle: Descarga Node.js de la forma que quieras.
+---
+
+
+Instala Node.js en utilizando
+
+
+
+
+
+Node.js incluye .
+
+Lee el historial para esta versión
+
+Lee el artículo del blog para esta versión
+
+Aprende a cómo verificar la firma SHASUMS
+
+Comprueba otros gestores de paquetes soportados por la comunidad
+
+
diff --git a/apps/site/pages/es/download/prebuilt-binaries/current.mdx b/apps/site/pages/es/download/prebuilt-binaries/current.mdx
new file mode 100644
index 0000000000000..04509a058ed20
--- /dev/null
+++ b/apps/site/pages/es/download/prebuilt-binaries/current.mdx
@@ -0,0 +1,24 @@
+---
+layout: download
+title: Descargar Node.js®
+subtitle: Descarga Node.js de la forma que quieras.
+---
+
+
+Quiero la versión de Node.js para corriendo
+
+
+
+
+
+Node.js incluye .
+
+Lee el historial para esta versión
+
+Lee el artículo del blog para esta versión
+
+Aprende a cómo verificar la firma SHASUMS
+
+Comprueba los binarios pre construidos de Nightly o las Construcciones no oficiales para otras plataformas
+
+
diff --git a/apps/site/pages/es/download/prebuilt-binaries/index.mdx b/apps/site/pages/es/download/prebuilt-binaries/index.mdx
new file mode 100644
index 0000000000000..5420e8b6ba326
--- /dev/null
+++ b/apps/site/pages/es/download/prebuilt-binaries/index.mdx
@@ -0,0 +1,24 @@
+---
+layout: download
+title: Descargar Node.js®
+subtitle: Descarga Node.js de la forma que quieras.
+---
+
+
+Quiero la versión de Node.js para corriendo
+
+
+
+
+
+Node.js incluye .
+
+Lee el historial para esta versión.
+
+Lee el artículo del blog para esta versión.
+
+Aprende a cómo verificar la firma SHASUMS.
+
+Échale un vistazo a los binarios precompilados Nightly, todos los binarios precompilados de los Lanzamiento, o las versiones no oficiales para otras plataformas.
+
+
diff --git a/apps/site/pages/es/download/prebuilt-installer/current.mdx b/apps/site/pages/es/download/prebuilt-installer/current.mdx
new file mode 100644
index 0000000000000..7a86bfca08da8
--- /dev/null
+++ b/apps/site/pages/es/download/prebuilt-installer/current.mdx
@@ -0,0 +1,26 @@
+---
+layout: download
+title: Descargar Node.js®
+subtitle: Descarga Node.js de la forma que quieras.
+---
+
+
+Quiero la versión de Node.js para ejecutada en
+
+
+
+
+
+Node.js incluye .
+
+Lee el historial para esta versión
+
+Lee el artículo del blog para esta versión
+
+Aprende a cómo verificar la firma SHASUMS
+
+Vea todas las opciones de descarga de Node.js disponibles
+
+Aprende sobre Versiones de Node.js
+
+
diff --git a/apps/site/pages/es/download/prebuilt-installer/index.mdx b/apps/site/pages/es/download/prebuilt-installer/index.mdx
new file mode 100644
index 0000000000000..3eb5c29645c3b
--- /dev/null
+++ b/apps/site/pages/es/download/prebuilt-installer/index.mdx
@@ -0,0 +1,26 @@
+---
+layout: download
+title: Descargar Node.js®
+subtitle: Descarga Node.js de la forma que quieras.
+---
+
+
+Quiero la versión de Node.js para ejecutar en
+
+
+
+
+
+Node.js incluye .
+
+Lee el historial para esta versión.
+
+Lee el artículo del blog para esta versión.
+
+Aprende a cómo verificar la firma SHASUMS
+
+Vea todas las opciones de descarga de Node.js disponibles
+
+Aprende sobre Versiones de Node.js
+
+
diff --git a/apps/site/pages/es/download/source-code/current.mdx b/apps/site/pages/es/download/source-code/current.mdx
new file mode 100644
index 0000000000000..059d8e9d82a3b
--- /dev/null
+++ b/apps/site/pages/es/download/source-code/current.mdx
@@ -0,0 +1,24 @@
+---
+layout: download
+title: Descargar Node.js®
+subtitle: Descarga Node.js de la forma que quieras.
+---
+
+
+Quiero la versión del código fuente de Node.js.
+
+
+
+
+
+Node.js incluye .
+
+Lee el historial para esta versión.
+
+Lee el artículo del blog para esta versión.
+
+Aprende a cómo verificar la firma SHASUMS
+
+Consulta cómo construir Node.js desde el código fuente.
+
+
diff --git a/apps/site/pages/es/download/source-code/index.mdx b/apps/site/pages/es/download/source-code/index.mdx
new file mode 100644
index 0000000000000..07cc059e9e693
--- /dev/null
+++ b/apps/site/pages/es/download/source-code/index.mdx
@@ -0,0 +1,24 @@
+---
+layout: download
+title: Descargar Node.js®
+subtitle: Descarga Node.js de la forma que quieras.
+---
+
+
+Quiero la versión del código fuente de Node.js.
+
+
+
+
+
+Node.js incluye .
+
+Lee el historial para esta versión.
+
+Lee el artículo del blog para esta versión.
+
+Aprende a cómo verificar la firma SHASUMS
+
+Verifica cómo construir Node.js desde el código fuente.
+
+
diff --git a/apps/site/pages/es/index.mdx b/apps/site/pages/es/index.mdx
index ad0b661117331..5ef18bf2575ed 100644
--- a/apps/site/pages/es/index.mdx
+++ b/apps/site/pages/es/index.mdx
@@ -4,131 +4,136 @@ layout: home
---
-
-
-
-
Ejecuta JavaScript en cualquier parte
-
- Node.js® es un entorno de ejecución de JavaScript multiplataforma,
- de código abierto y gratuito que permite a los desarrolladores crear servidores,
- aplicaciones web, herramientas de línea de comando y scripts.
-
-
-
-
-
- {({ release }) => (
- <>
- Descargar Node.js (LTS)
-
- Descarga Node.js {release.versionWithPrefix}
- 1 con soporte a largo plazo.
- Node.js también puede ser instalado a través de gestores de paquetes.
-
- >
- )}
-
-
-
- {({ release }) => (
+
+
+
+
Ejecuta JavaScript en cualquier parte
+
+Node.js® es un entorno de ejecución de JavaScript multiplataforma,
+de código abierto y gratuito que permite a los desarrolladores crear servidores,
+aplicaciones web, herramientas de línea de comando y scripts.
+
+
+
+
+
+ {({ release }) => (
+ <>
+ Descargar Node.js (LTS)
- ¿Quieres nuevas funciones más pronto?
- ConsigueNode.js {release.versionWithPrefix}
- 1 en vez.
+ Descarga Node.js {release.versionWithPrefix}
+ 1 con soporte a largo plazo.
+ Node.js también puede ser instalado a través de gestores de paquetes.
- )}
-
-
-