From 54bd5377a948282e4a49456bb61f10235131e83e Mon Sep 17 00:00:00 2001 From: RedYetiDev <38299977+RedYetiDev@users.noreply.github.com> Date: Wed, 13 Nov 2024 21:00:32 -0500 Subject: [PATCH 01/65] feat(ui): add `ui-components` package --- .../.storybook => .storybook}/constants.ts | 0 apps/site/.storybook/preview.tsx | 6 +- .../next-data/og/[category]/[title]/route.tsx | 6 +- .../Common/GlowingBackdrop/index.tsx | 3 +- .../components/Common/NodejsLogo/index.tsx | 7 +- apps/site/components/Common/Preview/index.tsx | 6 +- .../Common/Select/index.stories.tsx | 12 +- .../components/Containers/Footer/index.tsx | 24 +- .../Containers/MetaBar/index.stories.tsx | 4 +- .../components/Containers/NavBar/index.tsx | 4 +- .../Release/OperatingSystemDropdown.tsx | 16 +- .../Downloads/Release/PlatformDropdown.tsx | 23 +- .../__design__/node-logos.stories.tsx | 60 - .../__design__/platform-logos.stories.tsx | 33 - .../__design__/social-logos.stories.tsx | 27 - apps/site/components/withMetaBar.tsx | 4 +- apps/site/package.json | 3 +- apps/site/tailwind.config.ts | 162 +- apps/site/types/config.ts | 4 +- package-lock.json | 6884 ++++++----------- packages/ui-components/.storybook/main.ts | 34 + .../.storybook/preview-head.html | 20 + packages/ui-components/.storybook/preview.tsx | 25 + .../ui-components/.storybook/tailwind.css | 7 + packages/ui-components/.stylelintignore | 1 + packages/ui-components/.stylelintrc.mjs | 45 + .../Icons/HexagonGrid.stories.tsx | 2 +- .../ui-components}/Icons/HexagonGrid.tsx | 0 .../ui-components/Icons/Logos/JsGreen.tsx | 4 +- .../ui-components/Icons/Logos/JsWhite.tsx | 6 +- .../ui-components}/Icons/Logos/Nodejs.tsx | 6 +- .../Icons/Logos/NodejsStackedBlack.tsx | 4 +- .../Icons/Logos/NodejsStackedDark.tsx | 4 +- .../Icons/Logos/NodejsStackedLight.tsx | 4 +- .../Icons/Logos/NodejsStackedWhite.tsx | 4 +- .../ui-components}/Icons/Platform/Apple.tsx | 4 +- .../ui-components}/Icons/Platform/Choco.tsx | 4 +- .../ui-components}/Icons/Platform/Docker.tsx | 4 +- .../ui-components}/Icons/Platform/FNM.tsx | 4 +- .../ui-components}/Icons/Platform/Generic.tsx | 4 +- .../Icons/Platform/Homebrew.tsx | 4 +- .../ui-components}/Icons/Platform/Linux.tsx | 4 +- .../Icons/Platform/Microsoft.tsx | 4 +- .../ui-components}/Icons/Platform/NVM.tsx | 4 +- .../ui-components}/Icons/Social/Bluesky.tsx | 4 +- .../ui-components}/Icons/Social/GitHub.tsx | 4 +- .../ui-components}/Icons/Social/LinkedIn.tsx | 4 +- .../ui-components}/Icons/Social/Mastodon.tsx | 4 +- .../ui-components}/Icons/Social/Slack.tsx | 4 +- .../ui-components/Icons/Social/X.tsx | 4 +- .../__design__/node-logos.stories.tsx | 60 + .../__design__/platform-logos.stories.tsx | 33 + .../__design__/social-logos.stories.tsx | 27 + packages/ui-components/eslint.config.js | 68 + packages/ui-components/package.json | 44 + packages/ui-components/tailwind.config.ts | 1 + packages/ui-components/tsconfig.json | 21 + packages/ui-components/turbo.json | 25 + .../og.ts => packages/ui-components/types.ts | 1 + tailwind.config.ts | 153 + 60 files changed, 3156 insertions(+), 4791 deletions(-) rename {apps/site/.storybook => .storybook}/constants.ts (100%) delete mode 100644 apps/site/components/__design__/node-logos.stories.tsx delete mode 100644 apps/site/components/__design__/platform-logos.stories.tsx delete mode 100644 apps/site/components/__design__/social-logos.stories.tsx create mode 100644 packages/ui-components/.storybook/main.ts create mode 100644 packages/ui-components/.storybook/preview-head.html create mode 100644 packages/ui-components/.storybook/preview.tsx create mode 100644 packages/ui-components/.storybook/tailwind.css create mode 100644 packages/ui-components/.stylelintignore create mode 100644 packages/ui-components/.stylelintrc.mjs rename {apps/site/components => packages/ui-components}/Icons/HexagonGrid.stories.tsx (77%) rename {apps/site/components => packages/ui-components}/Icons/HexagonGrid.tsx (100%) rename apps/site/components/Icons/Logos/JsIconGreen.tsx => packages/ui-components/Icons/Logos/JsGreen.tsx (95%) rename apps/site/components/Icons/Logos/JsIconWhite.tsx => packages/ui-components/Icons/Logos/JsWhite.tsx (94%) rename {apps/site/components => packages/ui-components}/Icons/Logos/Nodejs.tsx (98%) rename {apps/site/components => packages/ui-components}/Icons/Logos/NodejsStackedBlack.tsx (98%) rename {apps/site/components => packages/ui-components}/Icons/Logos/NodejsStackedDark.tsx (98%) rename {apps/site/components => packages/ui-components}/Icons/Logos/NodejsStackedLight.tsx (98%) rename {apps/site/components => packages/ui-components}/Icons/Logos/NodejsStackedWhite.tsx (98%) rename {apps/site/components => packages/ui-components}/Icons/Platform/Apple.tsx (91%) rename {apps/site/components => packages/ui-components}/Icons/Platform/Choco.tsx (96%) rename {apps/site/components => packages/ui-components}/Icons/Platform/Docker.tsx (92%) rename {apps/site/components => packages/ui-components}/Icons/Platform/FNM.tsx (99%) rename {apps/site/components => packages/ui-components}/Icons/Platform/Generic.tsx (83%) rename {apps/site/components => packages/ui-components}/Icons/Platform/Homebrew.tsx (97%) rename {apps/site/components => packages/ui-components}/Icons/Platform/Linux.tsx (99%) rename {apps/site/components => packages/ui-components}/Icons/Platform/Microsoft.tsx (80%) rename {apps/site/components => packages/ui-components}/Icons/Platform/NVM.tsx (97%) rename {apps/site/components => packages/ui-components}/Icons/Social/Bluesky.tsx (90%) rename {apps/site/components => packages/ui-components}/Icons/Social/GitHub.tsx (94%) rename {apps/site/components => packages/ui-components}/Icons/Social/LinkedIn.tsx (85%) rename {apps/site/components => packages/ui-components}/Icons/Social/Mastodon.tsx (96%) rename {apps/site/components => packages/ui-components}/Icons/Social/Slack.tsx (92%) rename apps/site/components/Icons/Social/Twitter.tsx => packages/ui-components/Icons/Social/X.tsx (82%) create mode 100644 packages/ui-components/__design__/node-logos.stories.tsx create mode 100644 packages/ui-components/__design__/platform-logos.stories.tsx create mode 100644 packages/ui-components/__design__/social-logos.stories.tsx create mode 100644 packages/ui-components/eslint.config.js create mode 100644 packages/ui-components/package.json create mode 100644 packages/ui-components/tailwind.config.ts create mode 100644 packages/ui-components/tsconfig.json create mode 100644 packages/ui-components/turbo.json rename apps/site/types/og.ts => packages/ui-components/types.ts (69%) create mode 100644 tailwind.config.ts diff --git a/apps/site/.storybook/constants.ts b/.storybook/constants.ts similarity index 100% rename from apps/site/.storybook/constants.ts rename to .storybook/constants.ts diff --git a/apps/site/.storybook/preview.tsx b/apps/site/.storybook/preview.tsx index 1cc9e387dce32..be7c0855f0288 100644 --- a/apps/site/.storybook/preview.tsx +++ b/apps/site/.storybook/preview.tsx @@ -3,9 +3,13 @@ import { withThemeByDataAttribute } from '@storybook/addon-themes'; import type { Preview, ReactRenderer } from '@storybook/react'; import { NextIntlClientProvider } from 'next-intl'; -import { STORYBOOK_MODES, STORYBOOK_SIZES } from '@/.storybook/constants'; import { NotificationProvider } from '@/providers/notificationProvider'; +import { + STORYBOOK_MODES, + STORYBOOK_SIZES, +} from '../../../.storybook/constants'; + import '../styles/index.css'; const preview: Preview = { diff --git a/apps/site/app/[locale]/next-data/og/[category]/[title]/route.tsx b/apps/site/app/[locale]/next-data/og/[category]/[title]/route.tsx index 9df04e144b735..aecae8b293669 100644 --- a/apps/site/app/[locale]/next-data/og/[category]/[title]/route.tsx +++ b/apps/site/app/[locale]/next-data/og/[category]/[title]/route.tsx @@ -1,7 +1,7 @@ +import HexagonGrid from '@node-core/ui-components/Icons/HexagonGrid'; +import JsWhiteIcon from '@node-core/ui-components/Icons/Logos/JsWhite'; import { ImageResponse } from 'next/og'; -import HexagonGrid from '@/components/Icons/HexagonGrid'; -import JsIconWhite from '@/components/Icons/Logos/JsIconWhite'; import { DEFAULT_CATEGORY_OG_TYPE } from '@/next.constants.mjs'; import { defaultLocale } from '@/next.locales.mjs'; import tailwindConfig from '@/tailwind.config'; @@ -40,7 +40,7 @@ export const GET = async (_: Request, props: StaticParams) => {
- +

{params.title.slice(0, 100)}

diff --git a/apps/site/components/Common/GlowingBackdrop/index.tsx b/apps/site/components/Common/GlowingBackdrop/index.tsx index e5b10fe51abb0..8166d980b5596 100644 --- a/apps/site/components/Common/GlowingBackdrop/index.tsx +++ b/apps/site/components/Common/GlowingBackdrop/index.tsx @@ -1,7 +1,6 @@ +import HexagonGrid from '@node-core/ui-components/Icons/HexagonGrid'; import type { FC } from 'react'; -import HexagonGrid from '@/components/Icons/HexagonGrid'; - import styles from './index.module.css'; const GlowingBackdrop: FC = () => ( diff --git a/apps/site/components/Common/NodejsLogo/index.tsx b/apps/site/components/Common/NodejsLogo/index.tsx index 7ca383e10c505..c888b3fd14fd4 100644 --- a/apps/site/components/Common/NodejsLogo/index.tsx +++ b/apps/site/components/Common/NodejsLogo/index.tsx @@ -1,8 +1,7 @@ +import NodejsIcon from '@node-core/ui-components/Icons/Logos/Nodejs'; +import type { LogoVariant } from '@node-core/ui-components/types'; import type { FC } from 'react'; -import Nodejs from '@/components/Icons/Logos/Nodejs'; -import type { LogoVariant } from '@/types'; - import style from './index.module.css'; type NodejsLogoProps = { @@ -10,7 +9,7 @@ type NodejsLogoProps = { }; const NodejsLogo: FC = ({ variant = 'default' }) => ( - + ); export default NodejsLogo; diff --git a/apps/site/components/Common/Preview/index.tsx b/apps/site/components/Common/Preview/index.tsx index 489fdc01b18a4..f76003fd84b06 100644 --- a/apps/site/components/Common/Preview/index.tsx +++ b/apps/site/components/Common/Preview/index.tsx @@ -1,8 +1,8 @@ +import HexagonGrid from '@node-core/ui-components/Icons/HexagonGrid'; +import JsWhiteIcon from '@node-core/ui-components/Icons/Logos/JsWhite'; import classNames from 'classnames'; import type { FC } from 'react'; -import HexagonGrid from '@/components/Icons/HexagonGrid'; -import JsIconWhite from '@/components/Icons/Logos/JsIconWhite'; import type { BlogPreviewType } from '@/types'; import styles from './index.module.css'; @@ -16,7 +16,7 @@ const Preview: FC = ({ type = 'announcements', title }) => (
- + {title}
diff --git a/apps/site/components/Common/Select/index.stories.tsx b/apps/site/components/Common/Select/index.stories.tsx index c233b69cf1f17..af9df7daeb88a 100644 --- a/apps/site/components/Common/Select/index.stories.tsx +++ b/apps/site/components/Common/Select/index.stories.tsx @@ -1,9 +1,9 @@ +import AppleIcon from '@node-core/ui-components/Icons/Platform/Apple'; +import LinuxIcon from '@node-core/ui-components/Icons/Platform/Linux'; +import MicrosoftIcon from '@node-core/ui-components/Icons/Platform/Microsoft'; import type { Meta as MetaObj, StoryObj } from '@storybook/react'; import Select from '@/components/Common/Select'; -import Apple from '@/components/Icons/Platform/Apple'; -import Linux from '@/components/Icons/Platform/Linux'; -import Microsoft from '@/components/Icons/Platform/Microsoft'; type Story = StoryObj; type Meta = MetaObj; @@ -78,17 +78,17 @@ export const InlineSelect: Story = { { value: 'linux', label: 'Linux', - iconImage: , + iconImage: , }, { value: 'macos', label: 'macOS', - iconImage: , + iconImage: , }, { value: 'windows', label: 'Windows', - iconImage: , + iconImage: , }, ], }, diff --git a/apps/site/components/Containers/Footer/index.tsx b/apps/site/components/Containers/Footer/index.tsx index e2d2411db1098..183e57559311b 100644 --- a/apps/site/components/Containers/Footer/index.tsx +++ b/apps/site/components/Containers/Footer/index.tsx @@ -1,24 +1,24 @@ +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'; import { useTranslations } from 'next-intl'; import type { FC, SVGProps } from 'react'; import NavItem from '@/components/Containers/NavBar/NavItem'; -import Bluesky from '@/components/Icons/Social/Bluesky'; -import GitHub from '@/components/Icons/Social/GitHub'; -import LinkedIn from '@/components/Icons/Social/LinkedIn'; -import Mastodon from '@/components/Icons/Social/Mastodon'; -import Slack from '@/components/Icons/Social/Slack'; -import Twitter from '@/components/Icons/Social/Twitter'; import { siteNavigation } from '@/next.json.mjs'; import styles from './index.module.css'; const footerSocialIcons: Record>> = { - github: GitHub, - mastodon: Mastodon, - twitter: Twitter, - slack: Slack, - linkedin: LinkedIn, - bluesky: Bluesky, + github: GitHubIcon, + mastodon: MastodonIcon, + twitter: XIcon, + slack: SlackIcon, + linkedin: LinkedInIcon, + bluesky: BlueskyIcon, }; const Footer: FC = () => { diff --git a/apps/site/components/Containers/MetaBar/index.stories.tsx b/apps/site/components/Containers/MetaBar/index.stories.tsx index 9d31de185720c..97221383e86df 100644 --- a/apps/site/components/Containers/MetaBar/index.stories.tsx +++ b/apps/site/components/Containers/MetaBar/index.stories.tsx @@ -1,8 +1,8 @@ import { CodeBracketIcon } from '@heroicons/react/24/outline'; +import GitHubIcon from '@node-core/ui-components/Icons/Social/GitHub'; import type { Meta as MetaObj, StoryObj } from '@storybook/react'; import MetaBar from '@/components/Containers/MetaBar'; -import GitHub from '@/components/Icons/Social/GitHub'; import Link from '@/components/Link'; import WithAvatarGroup from '@/components/withAvatarGroup'; @@ -40,7 +40,7 @@ export const Default: Story = { ), 'components.metabar.contribute': ( <> - + Edit this page ), diff --git a/apps/site/components/Containers/NavBar/index.tsx b/apps/site/components/Containers/NavBar/index.tsx index 1ce06a1a5d0f6..9439d7b4cd1d4 100644 --- a/apps/site/components/Containers/NavBar/index.tsx +++ b/apps/site/components/Containers/NavBar/index.tsx @@ -2,6 +2,7 @@ import Hamburger from '@heroicons/react/24/solid/Bars3Icon'; import XMark from '@heroicons/react/24/solid/XMarkIcon'; +import GitHubIcon from '@node-core/ui-components/Icons/Social/GitHub'; import * as Label from '@radix-ui/react-label'; import { useState } from 'react'; import type { FC, ComponentProps, HTMLAttributeAnchorTarget } from 'react'; @@ -10,7 +11,6 @@ import LanguageDropdown from '@/components/Common/LanguageDropDown'; import { SearchButton } from '@/components/Common/Search'; import ThemeToggle from '@/components/Common/ThemeToggle'; import NavItem from '@/components/Containers/NavBar/NavItem'; -import GitHub from '@/components/Icons/Social/GitHub'; import Link from '@/components/Link'; import WithNodejsLogo from '@/components/withNodejsLogo'; import type { FormattedMessage } from '@/types'; @@ -82,7 +82,7 @@ const NavBar: FC = ({ href="https://github.com/nodejs/node" aria-label="Node.js Github" > - + diff --git a/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx b/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx index eccb0f21cc4e7..cab85ba9793ab 100644 --- a/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx +++ b/apps/site/components/Downloads/Release/OperatingSystemDropdown.tsx @@ -1,14 +1,14 @@ 'use client'; +import AppleIcon from '@node-core/ui-components/Icons/Platform/Apple'; +import AixIcon from '@node-core/ui-components/Icons/Platform/Generic'; +import LinuxIcon from '@node-core/ui-components/Icons/Platform/Linux'; +import MicrosoftIcon from '@node-core/ui-components/Icons/Platform/Microsoft'; import { useTranslations } from 'next-intl'; import { useContext, useEffect } from 'react'; import type { FC } from 'react'; import Select from '@/components/Common/Select'; -import Apple from '@/components/Icons/Platform/Apple'; -import Aix from '@/components/Icons/Platform/Generic'; -import Linux from '@/components/Icons/Platform/Linux'; -import Microsoft from '@/components/Icons/Platform/Microsoft'; import { useDetectOS } from '@/hooks/react-client'; import { ReleaseContext } from '@/providers/releaseProvider'; import type { UserOS } from '@/types/userOS'; @@ -54,10 +54,10 @@ const OperatingSystemDropdown: FC = ({ items: operatingSystemItems, disabledItems: exclude, icons: { - WIN: , - MAC: , - LINUX: , - AIX: , + WIN: , + MAC: , + LINUX: , + AIX: , }, })} ariaLabel={t('layouts.download.dropdown.os')} diff --git a/apps/site/components/Downloads/Release/PlatformDropdown.tsx b/apps/site/components/Downloads/Release/PlatformDropdown.tsx index 4ac966c72c8a9..4fbbc6b3a3d35 100644 --- a/apps/site/components/Downloads/Release/PlatformDropdown.tsx +++ b/apps/site/components/Downloads/Release/PlatformDropdown.tsx @@ -1,14 +1,15 @@ 'use client'; + +import ChocoIcon from '@node-core/ui-components/Icons/Platform/Choco'; +import DockerIcon from '@node-core/ui-components/Icons/Platform/Docker'; +import FNMIcon from '@node-core/ui-components/Icons/Platform/FNM'; +import HomebrewIcon from '@node-core/ui-components/Icons/Platform/Homebrew'; +import NVMIcon from '@node-core/ui-components/Icons/Platform/NVM'; import { useTranslations } from 'next-intl'; -import { useContext, useEffect, useMemo } from 'react'; import type { FC } from 'react'; +import { useContext, useEffect, useMemo } from 'react'; import Select from '@/components/Common/Select'; -import Choco from '@/components/Icons/Platform/Choco'; -import Docker from '@/components/Icons/Platform/Docker'; -import FNM from '@/components/Icons/Platform/FNM'; -import Homebrew from '@/components/Icons/Platform/Homebrew'; -import NVM from '@/components/Icons/Platform/NVM'; import { ReleaseContext } from '@/providers/releaseProvider'; import type { PackageManager } from '@/types/release'; import { formatDropdownItems, platformItems } from '@/util/downloadUtils'; @@ -68,11 +69,11 @@ const PlatformDropdown: FC = () => { values={formatDropdownItems({ items: platformItems, icons: { - NVM: , - FNM: , - BREW: , - DOCKER: , - CHOCO: , + NVM: , + FNM: , + BREW: , + DOCKER: , + CHOCO: , }, disabledItems, })} diff --git a/apps/site/components/__design__/node-logos.stories.tsx b/apps/site/components/__design__/node-logos.stories.tsx deleted file mode 100644 index 157a5cd3df709..0000000000000 --- a/apps/site/components/__design__/node-logos.stories.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import type { Meta as MetaObj, StoryObj } from '@storybook/react'; - -import JsIconGreen from '@/components/Icons/Logos/JsIconGreen'; -import JsIconWhite from '@/components/Icons/Logos/JsIconWhite'; -import NodejsLogo from '@/components/Icons/Logos/Nodejs'; -import NodejsStackedBlack from '@/components/Icons/Logos/NodejsStackedBlack'; -import NodejsStackedDark from '@/components/Icons/Logos/NodejsStackedDark'; -import NodejsStackedLight from '@/components/Icons/Logos/NodejsStackedLight'; -import NodejsStackedWhite from '@/components/Icons/Logos/NodejsStackedWhite'; - -export const HorizontalLogo: StoryObj = { - render: () => , -}; - -export const PrideLogo: StoryObj = { - render: () => , -}; - -export const StackedLogos: StoryObj = { - render: () => ( -
-
- - - - - - - -
-
- ), -}; - -export const JSSymbols: StoryObj = { - render: () => ( -
- - -
- ), -}; - -export default { title: 'Design System' } as MetaObj; diff --git a/apps/site/components/__design__/platform-logos.stories.tsx b/apps/site/components/__design__/platform-logos.stories.tsx deleted file mode 100644 index e383be1216b01..0000000000000 --- a/apps/site/components/__design__/platform-logos.stories.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import type { Meta as MetaObj, StoryObj } from '@storybook/react'; - -import Apple from '@/components/Icons/Platform/Apple'; -import Choco from '@/components/Icons/Platform/Choco'; -import Docker from '@/components/Icons/Platform/Docker'; -import Generic from '@/components/Icons/Platform/Generic'; -import Homebrew from '@/components/Icons/Platform/Homebrew'; -import Linux from '@/components/Icons/Platform/Linux'; -import Microsoft from '@/components/Icons/Platform/Microsoft'; -import NVM from '@/components/Icons/Platform/NVM'; - -export const PlatformLogos: StoryObj = { - render: () => ( -
-
- - - -
-
- - - -
-
- - -
-
- ), -}; - -export default { title: 'Design System' } as MetaObj; diff --git a/apps/site/components/__design__/social-logos.stories.tsx b/apps/site/components/__design__/social-logos.stories.tsx deleted file mode 100644 index e2699163c1451..0000000000000 --- a/apps/site/components/__design__/social-logos.stories.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import type { Meta as MetaObj, StoryObj } from '@storybook/react'; - -import Bluesky from '@/components/Icons/Social/Bluesky'; -import GitHub from '@/components/Icons/Social/GitHub'; -import LinkedIn from '@/components/Icons/Social/LinkedIn'; -import Mastodon from '@/components/Icons/Social/Mastodon'; -import Slack from '@/components/Icons/Social/Slack'; -import Twitter from '@/components/Icons/Social/Twitter'; - -export const SocialMediaLogos: StoryObj = { - render: () => ( -
-
- - - -
-
- - - -
-
- ), -}; - -export default { title: 'Design System' } as MetaObj; diff --git a/apps/site/components/withMetaBar.tsx b/apps/site/components/withMetaBar.tsx index 1c895179c5b31..a4e2075aa849e 100644 --- a/apps/site/components/withMetaBar.tsx +++ b/apps/site/components/withMetaBar.tsx @@ -1,9 +1,9 @@ 'use client'; +import GitHubIcon from '@node-core/ui-components/Icons/Social/GitHub'; import { useFormatter } from 'next-intl'; import type { FC } from 'react'; import MetaBar from '@/components/Containers/MetaBar'; -import GitHub from '@/components/Icons/Social/GitHub'; import Link from '@/components/Link'; import WithAvatarGroup from '@/components/withAvatarGroup'; import { useClientContext } from '@/hooks/react-client'; @@ -45,7 +45,7 @@ const WithMetaBar: FC = () => { }), 'components.metabar.contribute': ( <> - + Edit this page ), diff --git a/apps/site/package.json b/apps/site/package.json index 0ab8aa8178798..9fd296093df5a 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -39,6 +39,7 @@ "@heroicons/react": "~2.1.5", "@mdx-js/mdx": "^3.1.0", "@node-core/website-i18n": "*", + "@node-core/ui-components": "*", "@nodevu/core": "0.3.0", "@opentelemetry/api": "1.9.0", "@orama/highlight": "0.1.6", @@ -129,4 +130,4 @@ "typescript-eslint": "~8.14.0", "user-agent-data-types": "0.4.2" } -} +} \ No newline at end of file diff --git a/apps/site/tailwind.config.ts b/apps/site/tailwind.config.ts index b2aa693bad259..d41cd09bbea4f 100644 --- a/apps/site/tailwind.config.ts +++ b/apps/site/tailwind.config.ts @@ -1,161 +1 @@ -import type { Config } from 'tailwindcss'; - -export default { - content: [ - './pages/**/*.{tsx,mdx}', - './components/**/*.tsx', - './providers/**/*.tsx', - './layouts/**/*.tsx', - './.storybook/preview.tsx', - './.storybook/main.ts', - './app/**/*.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; +export { default } from '../../tailwind.config'; diff --git a/apps/site/types/config.ts b/apps/site/types/config.ts index f307d15457aab..6645ee18b678a 100644 --- a/apps/site/types/config.ts +++ b/apps/site/types/config.ts @@ -1,3 +1,5 @@ +import type { LogoVariant } from '@node-core/ui-components/types'; + import type { RSSFeed, WebsiteBadge, WebsiteBanner } from './features'; export interface TwitterConfig { @@ -13,8 +15,6 @@ export interface OGConfig { imgHeight: string; } -export type LogoVariant = 'default' | 'pride'; - export interface SiteConfig { title: string; description: string; diff --git a/package-lock.json b/package-lock.json index 05e2c1c7de090..f55d907ee751e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,6 +36,7 @@ "dependencies": { "@heroicons/react": "~2.1.5", "@mdx-js/mdx": "^3.1.0", + "@node-core/ui-components": "*", "@node-core/website-i18n": "*", "@nodevu/core": "0.3.0", "@opentelemetry/api": "1.9.0", @@ -163,107 +164,6 @@ "undici-types": "~6.19.2" } }, - "apps/site/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "apps/site/node_modules/dedent": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", - "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", - "license": "MIT", - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } - } - }, - "apps/site/node_modules/glob": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", - "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^4.0.1", - "minimatch": "^10.0.0", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "apps/site/node_modules/jackspeak": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.2.tgz", - "integrity": "sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "apps/site/node_modules/lru-cache": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", - "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", - "license": "ISC", - "engines": { - "node": "20 || >=22" - } - }, - "apps/site/node_modules/minimatch": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", - "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "apps/site/node_modules/path-scurry": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", - "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@adobe/css-tools": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.1.tgz", @@ -791,16 +691,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/types": { "version": "7.26.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", @@ -1033,513 +923,130 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/@emnapi/runtime": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz", - "integrity": "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==", - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { + "node_modules/@esbuild/linux-x64": { "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", - "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", + "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", "cpu": [ - "ppc64" + "x64" ], "dev": true, "license": "MIT", "optional": true, "os": [ - "aix" + "linux" ], "engines": { "node": ">=18" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", - "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", - "cpu": [ - "arm" - ], + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, "engines": { - "node": ">=18" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@esbuild/android-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", - "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", - "cpu": [ - "arm64" - ], + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], "engines": { - "node": ">=18" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@esbuild/android-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", - "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", - "cpu": [ - "x64" - ], + "node_modules/@eslint/compat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.3.tgz", + "integrity": "sha512-wlZhwlDFxkxIZ571aH0FoK4h4Vwx7P3HJx62Gp8hTc10bfpwT2x0nULuAHmQSJBOWPgPeVf+9YtnD4j50zVHmA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], + "license": "Apache-2.0", "engines": { - "node": ">=18" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": "^9.10.0" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", - "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", - "cpu": [ - "arm64" - ], + "node_modules/@eslint/config-array": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", + "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, "engines": { - "node": ">=18" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", - "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", - "cpu": [ - "x64" - ], + "node_modules/@eslint/config-array/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } + "license": "MIT" }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", - "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", - "cpu": [ - "arm64" - ], + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", - "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", - "cpu": [ - "x64" - ], + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=18" + "node": "*" } }, - "node_modules/@esbuild/linux-arm": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", - "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", - "cpu": [ - "arm" - ], + "node_modules/@eslint/core": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", + "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", - "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", - "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", - "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", - "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", - "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", - "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", - "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", - "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", - "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", - "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", - "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", - "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", - "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", - "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", - "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/compat": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-1.2.3.tgz", - "integrity": "sha512-wlZhwlDFxkxIZ571aH0FoK4h4Vwx7P3HJx62Gp8hTc10bfpwT2x0nULuAHmQSJBOWPgPeVf+9YtnD4j50zVHmA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "peerDependencies": { - "eslint": "^9.10.0" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/@eslint/config-array": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", - "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.4", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", - "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/eslintrc": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", - "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1577,6 +1084,37 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/@eslint/eslintrc/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -1584,6 +1122,19 @@ "dev": true, "license": "MIT" }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@eslint/js": { "version": "9.14.0", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.14.0.tgz", @@ -1776,132 +1327,8 @@ "node": ">=18.18" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@img/sharp-darwin-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", - "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.0.4" - } - }, - "node_modules/@img/sharp-darwin-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", - "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.0.4" - } - }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", - "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", - "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", - "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", - "cpu": [ - "arm" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", - "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", - "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", - "cpu": [ - "s390x" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, "node_modules/@img/sharp-libvips-linux-x64": { @@ -1920,22 +1347,6 @@ "url": "https://opencollective.com/libvips" } }, - "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", - "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, "node_modules/@img/sharp-libvips-linuxmusl-x64": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", @@ -1952,72 +1363,6 @@ "url": "https://opencollective.com/libvips" } }, - "node_modules/@img/sharp-linux-arm": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", - "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", - "cpu": [ - "arm" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.0.5" - } - }, - "node_modules/@img/sharp-linux-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", - "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.0.4" - } - }, - "node_modules/@img/sharp-linux-s390x": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", - "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", - "cpu": [ - "s390x" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.0.4" - } - }, "node_modules/@img/sharp-linux-x64": { "version": "0.33.5", "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", @@ -2040,28 +1385,6 @@ "@img/sharp-libvips-linux-x64": "1.0.4" } }, - "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", - "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" - } - }, "node_modules/@img/sharp-linuxmusl-x64": { "version": "0.33.5", "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", @@ -2084,63 +1407,6 @@ "@img/sharp-libvips-linuxmusl-x64": "1.0.4" } }, - "node_modules/@img/sharp-wasm32": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", - "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", - "cpu": [ - "wasm32" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", - "optional": true, - "dependencies": { - "@emnapi/runtime": "^1.2.0" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-ia32": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", - "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", - "cpu": [ - "ia32" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", - "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -2158,18 +1424,6 @@ "node": ">=12" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, "node_modules/@isaacs/cliui/node_modules/ansi-styles": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", @@ -2182,12 +1436,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "license": "MIT" - }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", @@ -2205,21 +1453,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", @@ -2362,22 +1595,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/console/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@jest/console/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -2395,49 +1612,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/console/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/console/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/console/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/console/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/core": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", @@ -2486,22 +1660,6 @@ } } }, - "node_modules/@jest/core/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@jest/core/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -2513,40 +1671,10 @@ "supports-color": "^7.1.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/core/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/core/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/core/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/@jest/core/node_modules/pretty-format": { @@ -2584,14 +1712,14 @@ "dev": true, "license": "MIT" }, - "node_modules/@jest/core/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@jest/core/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" @@ -2718,20 +1846,22 @@ } } }, - "node_modules/@jest/reporters/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@jest/reporters/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/reporters/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/@jest/reporters/node_modules/chalk": { @@ -2751,44 +1881,49 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/reporters/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@jest/reporters/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "color-name": "~1.1.4" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=7.0.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@jest/reporters/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/reporters/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@jest/reporters/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/@jest/reporters/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@jest/reporters/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" @@ -2881,22 +2016,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/transform/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@jest/transform/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -2914,47 +2033,25 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/transform/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/transform/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/transform/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@jest/transform/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "license": "ISC" }, - "node_modules/@jest/transform/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@jest/transform/node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "has-flag": "^4.0.0" + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" }, "engines": { - "node": ">=8" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/@jest/types": { @@ -2975,22 +2072,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/types/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@jest/types/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -3008,49 +2089,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/types/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@jest/types/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/types/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/types/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", @@ -3146,12 +2184,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/@next/env": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/@next/env/-/env-15.0.3.tgz", - "integrity": "sha512-t9Xy32pjNOvVn2AS+Utt6VmyrshbpfUMhIjFO60gI58deSo/KgLOp31XZ4O+kY/Is8WAGYwA5gR7kOb1eORDBA==", - "license": "MIT" - }, "node_modules/@next/eslint-plugin-next": { "version": "15.0.3", "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-15.0.3.tgz", @@ -3199,7 +2231,6 @@ "cpu": [ "arm64" ], - "license": "MIT", "optional": true, "os": [ "darwin" @@ -3215,7 +2246,6 @@ "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "darwin" @@ -3231,7 +2261,6 @@ "cpu": [ "arm64" ], - "license": "MIT", "optional": true, "os": [ "linux" @@ -3247,39 +2276,6 @@ "cpu": [ "arm64" ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.0.3.tgz", - "integrity": "sha512-gWL/Cta1aPVqIGgDb6nxkqy06DkwJ9gAnKORdHWX1QBbSZZB+biFYPFti8aKIQL7otCE1pjyPaXpFzGeG2OS2w==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.0.3.tgz", - "integrity": "sha512-QQEMwFd8r7C0GxQS62Zcdy6GKx999I/rTO2ubdXEe+MlZk9ZiinsrjwoiBL5/57tfyjikgh6GOU2WRQVUej3UA==", - "cpu": [ - "x64" - ], - "license": "MIT", "optional": true, "os": [ "linux" @@ -3295,7 +2291,6 @@ "cpu": [ "arm64" ], - "license": "MIT", "optional": true, "os": [ "win32" @@ -3311,7 +2306,6 @@ "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "win32" @@ -3332,6 +2326,10 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/@node-core/ui-components": { + "resolved": "packages/ui-components", + "link": true + }, "node_modules/@node-core/website": { "resolved": "apps/site", "link": true @@ -3528,16 +2526,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/map-workspaces/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/@npmcli/map-workspaces/node_modules/glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", @@ -3559,17 +2547,41 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@npmcli/map-workspaces/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/@npmcli/map-workspaces/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/@npmcli/map-workspaces/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "license": "ISC", + "license": "ISC" + }, + "node_modules/@npmcli/map-workspaces/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.1" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -3604,16 +2616,6 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@npmcli/package-json/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/@npmcli/package-json/node_modules/glob": { "version": "10.4.5", "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", @@ -3635,6 +2637,22 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@npmcli/package-json/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/@npmcli/package-json/node_modules/json-parse-even-better-errors": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", @@ -3645,17 +2663,25 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@npmcli/package-json/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/@npmcli/package-json/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "license": "ISC", + "license": "ISC" + }, + "node_modules/@npmcli/package-json/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.1" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -4495,204 +3521,8 @@ "@radix-ui/react-id": "1.1.0", "@radix-ui/react-presence": "1.1.1", "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-roving-focus": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-toast": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.2.tgz", - "integrity": "sha512-Z6pqSzmAP/bFJoqMAston4eSNa+ud44NSZTiZUmUen+IOZ5nBY8kzuU5WDBVyFXPtcW6yUalOHsxM/BP6Sv8ww==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-collection": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.1", - "@radix-ui/react-portal": "1.1.2", - "@radix-ui/react-presence": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0", - "@radix-ui/react-visually-hidden": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-context": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.1.tgz", - "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.1.tgz", - "integrity": "sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ==", - "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-escape-keydown": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-portal": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.2.tgz", - "integrity": "sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg==", - "dependencies": { - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-layout-effect": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-presence": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.1.tgz", - "integrity": "sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-tooltip": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.1.3.tgz", - "integrity": "sha512-Z4w1FIS0BqVFI2c1jZvb/uDVJijJjJ2ZMuPV81oVgTZ7g3BZxobplnMVvXtFWgtozdvYJ+MFWtwkM5S2HnAong==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.1", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.0", - "@radix-ui/react-portal": "1.1.2", - "@radix-ui/react-presence": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-slot": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-visually-hidden": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-context": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.1.tgz", - "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.1.tgz", - "integrity": "sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-escape-keydown": "1.1.0" + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { "@types/react": "*", @@ -4709,14 +3539,24 @@ } } }, - "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-portal": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.2.tgz", - "integrity": "sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg==", + "node_modules/@radix-ui/react-toast": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.2.tgz", + "integrity": "sha512-Z6pqSzmAP/bFJoqMAston4eSNa+ud44NSZTiZUmUen+IOZ5nBY8kzuU5WDBVyFXPtcW6yUalOHsxM/BP6Sv8ww==", "license": "MIT", "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-presence": "1.1.1", "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-layout-effect": "1.1.0" + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.0" }, "peerDependencies": { "@types/react": "*", @@ -4733,14 +3573,24 @@ } } }, - "node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-presence": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.1.tgz", - "integrity": "sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==", + "node_modules/@radix-ui/react-tooltip": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.1.4.tgz", + "integrity": "sha512-QpObUH/ZlpaO4YgHSaYzrLO2VuO+ZBFFgGzjMUPwtiYnAzzNNDPJeEGRrT7qNOrWm/Jr08M1vlp+vTHtnSQ0Uw==", "license": "MIT", "dependencies": { + "@radix-ui/primitive": "1.1.0", "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0" + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.0" }, "peerDependencies": { "@types/react": "*", @@ -5403,21 +4253,6 @@ "webpack": ">= 4" } }, - "node_modules/@storybook/react-docgen-typescript-plugin/node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, "node_modules/@storybook/react-dom-shim": { "version": "8.4.4", "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.4.4.tgz", @@ -5510,56 +4345,6 @@ "yarn": ">=1" } }, - "node_modules/@storybook/test/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@storybook/test/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/test/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@storybook/test/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, "node_modules/@storybook/test/node_modules/dom-accessibility-api": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", @@ -5567,29 +4352,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@storybook/test/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/test/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@storybook/theming": { "version": "8.4.4", "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.4.4.tgz", @@ -5643,91 +4405,6 @@ } } }, - "node_modules/@swc/core-darwin-arm64": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.9.2.tgz", - "integrity": "sha512-nETmsCoY29krTF2PtspEgicb3tqw7Ci5sInTI03EU5zpqYbPjoPH99BVTjj0OsF53jP5MxwnLI5Hm21lUn1d6A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-darwin-x64": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.9.2.tgz", - "integrity": "sha512-9gD+bwBz8ZByjP6nZTXe/hzd0tySIAjpDHgkFiUrc+5zGF+rdTwhcNrzxNHJmy6mw+PW38jqII4uspFHUqqxuQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.9.2.tgz", - "integrity": "sha512-kYq8ief1Qrn+WmsTWAYo4r+Coul4dXN6cLFjiPZ29Cv5pyU+GFvSPAB4bEdMzwy99rCR0u2P10UExaeCjurjvg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.9.2.tgz", - "integrity": "sha512-n0W4XiXlmEIVqxt+rD3ZpkogsEWUk1jJ+i5bQNgB+1JuWh0fBE8c/blDgTQXa0GB5lTPVDZQussgdNOCnAZwiA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.9.2.tgz", - "integrity": "sha512-8xzrOmsyCC1zrx2Wzx/h8dVsdewO1oMCwBTLc1gSJ/YllZYTb04pNm6NsVbzUX2tKddJVRgSJXV10j/NECLwpA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, "node_modules/@swc/core-linux-x64-gnu": { "version": "1.9.2", "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.9.2.tgz", @@ -5762,72 +4439,12 @@ "node": ">=10" } }, - "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.9.2.tgz", - "integrity": "sha512-+Eg2d4icItKC0PMjZxH7cSYFLWk0aIp94LNmOw6tPq0e69ax6oh10upeq0D1fjWsKLmOJAWEvnXlayZcijEXDw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.9.2.tgz", - "integrity": "sha512-nLWBi4vZDdM/LkiQmPCakof8Dh1/t5EM7eudue04V1lIcqx9YHVRS3KMwEaCoHLGg0c312Wm4YgrWQd9vwZ5zQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.9.2.tgz", - "integrity": "sha512-ik/k+JjRJBFkXARukdU82tSVx0CbExFQoQ78qTO682esbYXzjdB5eLVkoUbwen299pnfr88Kn4kyIqFPTje8Xw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, "node_modules/@swc/counter": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", "license": "Apache-2.0" }, - "node_modules/@swc/helpers": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.13.tgz", - "integrity": "sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@swc/types": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.15.tgz", @@ -5854,33 +4471,17 @@ "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/runtime": "^7.12.5", - "@types/aria-query": "^5.0.1", - "aria-query": "5.3.0", - "chalk": "^4.1.0", - "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.5.0", - "pretty-format": "^27.0.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@testing-library/dom/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.3.0", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=18" } }, "node_modules/@testing-library/dom/node_modules/chalk": { @@ -5900,49 +4501,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@testing-library/dom/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@testing-library/dom/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@testing-library/dom/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/dom/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@testing-library/jest-dom": { "version": "6.6.3", "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.6.3.tgz", @@ -5964,56 +4522,6 @@ "yarn": ">=1" } }, - "node_modules/@testing-library/jest-dom/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@testing-library/jest-dom/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/@testing-library/jest-dom/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", @@ -6021,29 +4529,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@testing-library/jest-dom/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@testing-library/jest-dom/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@testing-library/react": { "version": "16.0.1", "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.0.1.tgz", @@ -6514,17 +4999,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.14.0.tgz", - "integrity": "sha512-tqp8H7UWFaZj0yNO6bycd5YjMwxa6wIHOLZvWPkidwbgLCsBMetQoGj7DPuAlWa2yGO3H48xmPwjhsSPPCGU5w==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.1.tgz", + "integrity": "sha512-xfvdgA8AP/vxHgtgU310+WBnLB4uJQ9XdyP17RebG26rLtDrQJV3ZYrcopX91GrHmMoH8bdSwMRh2a//TiJ1jQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.14.0", - "@typescript-eslint/type-utils": "8.14.0", - "@typescript-eslint/utils": "8.14.0", - "@typescript-eslint/visitor-keys": "8.14.0", + "@typescript-eslint/scope-manager": "8.8.1", + "@typescript-eslint/type-utils": "8.8.1", + "@typescript-eslint/utils": "8.8.1", + "@typescript-eslint/visitor-keys": "8.8.1", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -6547,17 +5032,40 @@ } } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.8.1.tgz", + "integrity": "sha512-/QkNJDbV0bdL7H7d0/y0qBbV2HTtf0TIyjSDTvvmQEzeVx8jEImEbLuOA4EsvE8gIgqMitns0ifb5uQhMj8d9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.8.1", + "@typescript-eslint/types": "8.8.1", + "@typescript-eslint/typescript-estree": "8.8.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + } + }, "node_modules/@typescript-eslint/parser": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.14.0.tgz", - "integrity": "sha512-2p82Yn9juUJq0XynBXtFCyrBDb6/dJombnz6vbo6mgQEtWHfvHbQuEa9kAOVIt1c9YFwi7H6WxtPj1kg+80+RA==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.8.1.tgz", + "integrity": "sha512-hQUVn2Lij2NAxVFEdvIGxT9gP1tq2yM83m+by3whWFsWC+1y8pxxxHUFE1UqDu2VsGi2i6RLcv4QvouM84U+ow==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "8.14.0", - "@typescript-eslint/types": "8.14.0", - "@typescript-eslint/typescript-estree": "8.14.0", - "@typescript-eslint/visitor-keys": "8.14.0", + "@typescript-eslint/scope-manager": "8.8.1", + "@typescript-eslint/types": "8.8.1", + "@typescript-eslint/typescript-estree": "8.8.1", + "@typescript-eslint/visitor-keys": "8.8.1", "debug": "^4.3.4" }, "engines": { @@ -6577,14 +5085,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.14.0.tgz", - "integrity": "sha512-aBbBrnW9ARIDn92Zbo7rguLnqQ/pOrUguVpbUwzOhkFg2npFDwTgPGqFqE0H5feXcOoJOfX3SxlJaKEVtq54dw==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.8.1.tgz", + "integrity": "sha512-X4JdU+66Mazev/J0gfXlcC/dV6JI37h+93W9BRYXrSn0hrE64IoWgVkO9MSJgEzoWkxONgaQpICWg8vAN74wlA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.14.0", - "@typescript-eslint/visitor-keys": "8.14.0" + "@typescript-eslint/types": "8.8.1", + "@typescript-eslint/visitor-keys": "8.8.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6595,14 +5103,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.14.0.tgz", - "integrity": "sha512-Xcz9qOtZuGusVOH5Uk07NGs39wrKkf3AxlkK79RBK6aJC1l03CobXjJbwBPSidetAOV+5rEVuiT1VSBUOAsanQ==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.8.1.tgz", + "integrity": "sha512-qSVnpcbLP8CALORf0za+vjLYj1Wp8HSoiI8zYU5tHxRVj30702Z1Yw4cLwfNKhTPWp5+P+k1pjmD5Zd1nhxiZA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.14.0", - "@typescript-eslint/utils": "8.14.0", + "@typescript-eslint/typescript-estree": "8.8.1", + "@typescript-eslint/utils": "8.8.1", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -6619,10 +5127,33 @@ } } }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.8.1.tgz", + "integrity": "sha512-/QkNJDbV0bdL7H7d0/y0qBbV2HTtf0TIyjSDTvvmQEzeVx8jEImEbLuOA4EsvE8gIgqMitns0ifb5uQhMj8d9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.8.1", + "@typescript-eslint/types": "8.8.1", + "@typescript-eslint/typescript-estree": "8.8.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + } + }, "node_modules/@typescript-eslint/types": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.14.0.tgz", - "integrity": "sha512-yjeB9fnO/opvLJFAsPNYlKPnEM8+z4og09Pk504dkqonT02AyL5Z9SSqlE0XqezS93v6CXn49VHvB2G7XSsl0g==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.1.tgz", + "integrity": "sha512-WCcTP4SDXzMd23N27u66zTKMuEevH4uzU8C9jf0RO4E04yVHgQgW+r+TeVTNnO1KIfrL8ebgVVYYMMO3+jC55Q==", "dev": true, "license": "MIT", "engines": { @@ -6634,14 +5165,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.14.0.tgz", - "integrity": "sha512-OPXPLYKGZi9XS/49rdaCbR5j/S14HazviBlUQFvSKz3npr3NikF+mrgK7CFVur6XEt95DZp/cmke9d5i3vtVnQ==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.1.tgz", + "integrity": "sha512-A5d1R9p+X+1js4JogdNilDuuq+EHZdsH9MjTVxXOdVFfTJXunKJR/v+fNNyO4TnoOn5HqobzfRlc70NC6HTcdg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "8.14.0", - "@typescript-eslint/visitor-keys": "8.14.0", + "@typescript-eslint/types": "8.8.1", + "@typescript-eslint/visitor-keys": "8.8.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -6662,43 +5193,76 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/@typescript-eslint/utils": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.14.0.tgz", + "integrity": "sha512-OGqj6uB8THhrHj0Fk27DcHPojW7zKwKkPmHXHvQ58pLYp4hy8CSUdTKykKeh+5vFqTTVmjz0zCOOPKRovdsgHA==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.14.0", + "@typescript-eslint/types": "8.14.0", + "@typescript-eslint/typescript-estree": "8.14.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.14.0.tgz", + "integrity": "sha512-aBbBrnW9ARIDn92Zbo7rguLnqQ/pOrUguVpbUwzOhkFg2npFDwTgPGqFqE0H5feXcOoJOfX3SxlJaKEVtq54dw==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "@typescript-eslint/types": "8.14.0", + "@typescript-eslint/visitor-keys": "8.14.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/utils": { + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { "version": "8.14.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.14.0.tgz", - "integrity": "sha512-OGqj6uB8THhrHj0Fk27DcHPojW7zKwKkPmHXHvQ58pLYp4hy8CSUdTKykKeh+5vFqTTVmjz0zCOOPKRovdsgHA==", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.14.0.tgz", + "integrity": "sha512-yjeB9fnO/opvLJFAsPNYlKPnEM8+z4og09Pk504dkqonT02AyL5Z9SSqlE0XqezS93v6CXn49VHvB2G7XSsl0g==", "dev": true, "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.14.0.tgz", + "integrity": "sha512-OPXPLYKGZi9XS/49rdaCbR5j/S14HazviBlUQFvSKz3npr3NikF+mrgK7CFVur6XEt95DZp/cmke9d5i3vtVnQ==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.14.0", "@typescript-eslint/types": "8.14.0", - "@typescript-eslint/typescript-estree": "8.14.0" + "@typescript-eslint/visitor-keys": "8.14.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6707,11 +5271,13 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@typescript-eslint/visitor-keys": { + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { "version": "8.14.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.14.0.tgz", "integrity": "sha512-vG0XZo8AdTH9OE6VFRwAZldNc7qtJ/6NLGWak+BtENuEUXGZgFpihILPiBvKXvJ2nFu27XNGC6rKiwuaoMbYzQ==", @@ -6729,17 +5295,22 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.1.tgz", + "integrity": "sha512-0/TdC3aeRAsW7MDvYRwEc1Uwm0TIBfzjPFgg60UU2Haj5qsCs9cc3zNgY71edqE3LbWfF/WoZQd3lJoDXFQpag==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.8.1", + "eslint-visitor-keys": "^3.4.3" + }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://opencollective.com/eslint" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, "node_modules/@ungap/structured-clone": { @@ -6984,13 +5555,13 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", - "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.12.tgz", + "integrity": "sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==", "license": "MIT", "dependencies": { "@babel/parser": "^7.25.3", - "@vue/shared": "3.5.13", + "@vue/shared": "3.5.12", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.0" @@ -7003,29 +5574,29 @@ "license": "MIT" }, "node_modules/@vue/compiler-dom": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", - "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.12.tgz", + "integrity": "sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==", "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.5.13", - "@vue/shared": "3.5.13" + "@vue/compiler-core": "3.5.12", + "@vue/shared": "3.5.12" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", - "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.12.tgz", + "integrity": "sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==", "license": "MIT", "dependencies": { "@babel/parser": "^7.25.3", - "@vue/compiler-core": "3.5.13", - "@vue/compiler-dom": "3.5.13", - "@vue/compiler-ssr": "3.5.13", - "@vue/shared": "3.5.13", + "@vue/compiler-core": "3.5.12", + "@vue/compiler-dom": "3.5.12", + "@vue/compiler-ssr": "3.5.12", + "@vue/shared": "3.5.12", "estree-walker": "^2.0.2", "magic-string": "^0.30.11", - "postcss": "^8.4.48", + "postcss": "^8.4.47", "source-map-js": "^1.2.0" } }, @@ -7036,63 +5607,63 @@ "license": "MIT" }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", - "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.12.tgz", + "integrity": "sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==", "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.13", - "@vue/shared": "3.5.13" + "@vue/compiler-dom": "3.5.12", + "@vue/shared": "3.5.12" } }, "node_modules/@vue/reactivity": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz", - "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.12.tgz", + "integrity": "sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==", "license": "MIT", "dependencies": { - "@vue/shared": "3.5.13" + "@vue/shared": "3.5.12" } }, "node_modules/@vue/runtime-core": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz", - "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.12.tgz", + "integrity": "sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.13", - "@vue/shared": "3.5.13" + "@vue/reactivity": "3.5.12", + "@vue/shared": "3.5.12" } }, "node_modules/@vue/runtime-dom": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", - "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.12.tgz", + "integrity": "sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.13", - "@vue/runtime-core": "3.5.13", - "@vue/shared": "3.5.13", + "@vue/reactivity": "3.5.12", + "@vue/runtime-core": "3.5.12", + "@vue/shared": "3.5.12", "csstype": "^3.1.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", - "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.12.tgz", + "integrity": "sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==", "license": "MIT", "dependencies": { - "@vue/compiler-ssr": "3.5.13", - "@vue/shared": "3.5.13" + "@vue/compiler-ssr": "3.5.12", + "@vue/shared": "3.5.12" }, "peerDependencies": { - "vue": "3.5.13" + "vue": "3.5.12" } }, "node_modules/@vue/shared": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", - "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.12.tgz", + "integrity": "sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==", "license": "MIT" }, "node_modules/@webassemblyjs/ast": { @@ -7467,16 +6038,18 @@ } }, "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/any-promise": { @@ -7498,6 +6071,18 @@ "node": ">= 8" } }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", @@ -7860,22 +6445,6 @@ "@babel/core": "^7.8.0" } }, - "node_modules/babel-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/babel-jest/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -7893,49 +6462,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/babel-jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/babel-jest/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/babel-jest/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-jest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/babel-plugin-istanbul": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", @@ -8051,9 +6577,10 @@ } }, "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", + "dev": true, "license": "MIT" }, "node_modules/base64-js": { @@ -8114,6 +6641,46 @@ "readable-stream": "^3.4.0" } }, + "node_modules/bl/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -8122,16 +6689,20 @@ "license": "ISC" }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, + "node_modules/brace-expansion/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, "node_modules/braces": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", @@ -8192,31 +6763,6 @@ "node-int64": "^0.4.0" } }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -8362,18 +6908,17 @@ } }, "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "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": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/char-regex": { @@ -8582,18 +7127,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-truncate/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, "node_modules/cli-truncate/node_modules/emoji-regex": { "version": "10.4.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", @@ -8617,21 +7150,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/cli-width": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", @@ -8663,6 +7181,19 @@ "node": ">=12" } }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", @@ -8716,39 +7247,10 @@ } }, "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "license": "MIT", - "optional": true, - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/color/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "license": "MIT", - "optional": true, "dependencies": { "color-name": "~1.1.4" }, @@ -8756,12 +7258,22 @@ "node": ">=7.0.0" } }, - "node_modules/color/node_modules/color-name": { + "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", "license": "MIT", - "optional": true + "optional": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } }, "node_modules/colord": { "version": "2.9.3", @@ -8799,12 +7311,13 @@ } }, "node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">= 12" } }, "node_modules/commitizen": { @@ -8838,6 +7351,66 @@ "node": ">= 12" } }, + "node_modules/commitizen/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/commitizen/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/commitizen/node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true, + "license": "MIT" + }, + "node_modules/commitizen/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/commitizen/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -8868,6 +7441,21 @@ "typedarray": "^0.0.6" } }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", @@ -8956,22 +7544,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/create-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/create-jest/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -8989,49 +7561,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/create-jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/create-jest/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/create-jest/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/create-jest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/cross-env": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", @@ -9110,18 +7639,21 @@ } } }, - "node_modules/css-tree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.0.1.tgz", - "integrity": "sha512-8Fxxv+tGhORlshCdCwnNJytvlvq46sOLSYEx2ZIGurahWvMucSRnyjPA3AmrMq4VPRYbHVpWj5VkiVasrM2H4Q==", + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "mdn-data": "2.12.1", - "source-map-js": "^1.0.1" + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + "funding": { + "url": "https://github.com/sponsors/fb55" } }, "node_modules/css-what": { @@ -9149,65 +7681,143 @@ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "dev": true, + "license": "MIT" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true, + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" + }, + "node_modules/cz-conventional-changelog": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-3.3.0.tgz", + "integrity": "sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.4.1", + "commitizen": "^4.0.3", + "conventional-commit-types": "^3.0.0", + "lodash.map": "^4.5.1", + "longest": "^2.0.1", + "word-wrap": "^1.0.3" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@commitlint/load": ">6.1.1" + } + }, + "node_modules/cz-conventional-changelog/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cz-conventional-changelog/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cz-conventional-changelog/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" } }, - "node_modules/cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "node_modules/cz-conventional-changelog/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true, "license": "MIT" }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "node_modules/cz-conventional-changelog/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "license": "MIT", - "dependencies": { - "cssom": "~0.3.6" - }, "engines": { - "node": ">=8" + "node": ">=0.8.0" } }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "node_modules/cz-conventional-changelog/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "license": "MIT" - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=4" + } }, - "node_modules/cz-conventional-changelog": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-3.3.0.tgz", - "integrity": "sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==", + "node_modules/cz-conventional-changelog/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^2.4.1", - "commitizen": "^4.0.3", - "conventional-commit-types": "^3.0.0", - "lodash.map": "^4.5.1", - "longest": "^2.0.1", - "word-wrap": "^1.0.3" + "has-flag": "^3.0.0" }, "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@commitlint/load": ">6.1.1" + "node": ">=4" } }, "node_modules/damerau-levenshtein": { @@ -9324,11 +7934,18 @@ } }, "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true, - "license": "MIT" + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } }, "node_modules/deep-eql": { "version": "5.0.2", @@ -9539,16 +8156,16 @@ "license": "MIT" }, "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, "engines": { - "node": ">=6.0.0" + "node": ">=0.10.0" } }, "node_modules/dom-accessibility-api": { @@ -9568,6 +8185,31 @@ "utila": "~0.4" } }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", @@ -9595,6 +8237,37 @@ "node": ">=12" } }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, "node_modules/dot-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", @@ -9613,9 +8286,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.62", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.62.tgz", - "integrity": "sha512-t8c+zLmJHa9dJy96yBZRXGQYoiCEnHYgFwn1asvSPZSUdVxnB62A4RASd7k41ytG3ErFBA0TpHlKg9D9SQBmLg==", + "version": "1.5.59", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.59.tgz", + "integrity": "sha512-faAXB6+gEbC8FsiRdpOXgOe4snP49YwjiXynEB8Mp7sUx80W5eN+BnnBHJ/F7eIeLzs+QBfDD40bJMm97oEFcw==", "license": "ISC" }, "node_modules/emittery": { @@ -9632,9 +8305,9 @@ } }, "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "license": "MIT" }, "node_modules/emoji-regex-xs": { @@ -9655,6 +8328,13 @@ "objectorarray": "^1.0.5" } }, + "node_modules/endent/node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true, + "license": "MIT" + }, "node_modules/enhanced-resolve": { "version": "5.17.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", @@ -9987,13 +8667,16 @@ } }, "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/escodegen": { @@ -10209,19 +8892,6 @@ "eslint": ">=8.0.0" } }, - "node_modules/eslint-mdx/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/eslint-mdx/node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -10303,9 +8973,9 @@ } }, "node_modules/eslint-plugin-import-x": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.4.2.tgz", - "integrity": "sha512-mDRXPSLQ0UQZQw91QdG4/qZT6hgeW2MJTczAbgPseUZuPEtIjjdPOolXroRkulnOn3fzj6gNgvk+wchMJiHElg==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.4.3.tgz", + "integrity": "sha512-QBprHvhLsfDhP++2T1NnjsOUt6bLDX3NMHaYwAB1FD3xmYTkdFH+HS1OamGhz28jLkRyIZa6UNAzTxbHnJwz5w==", "dev": true, "license": "MIT", "dependencies": { @@ -10327,30 +8997,35 @@ "eslint": "^8.57.0 || ^9.0.0" } }, - "node_modules/eslint-plugin-import-x/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/eslint-plugin-import-x/node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "balanced-match": "^1.0.0" + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/eslint-plugin-import-x/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/eslint-plugin-import/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, - "license": "ISC", + "license": "MIT" + }, + "node_modules/eslint-plugin-import/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/eslint-plugin-import/node_modules/debug": { @@ -10363,19 +9038,6 @@ "ms": "^2.1.1" } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/eslint-plugin-import/node_modules/json5": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", @@ -10389,6 +9051,19 @@ "json5": "lib/cli.js" } }, + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/eslint-plugin-import/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -10452,23 +9127,47 @@ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", - "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "Apache-2.0", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">= 0.4" + "node": "*" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, "node_modules/eslint-plugin-mdx": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/eslint-plugin-mdx/-/eslint-plugin-mdx-3.1.5.tgz", @@ -10746,17 +9445,35 @@ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "node_modules/eslint-plugin-react/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, - "license": "Apache-2.0", + "license": "MIT" + }, + "node_modules/eslint-plugin-react/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", "dependencies": { - "esutils": "^2.0.2" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-react/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=0.10.0" + "node": "*" } }, "node_modules/eslint-plugin-react/node_modules/resolve": { @@ -10788,9 +9505,9 @@ } }, "node_modules/eslint-plugin-storybook": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.11.0.tgz", - "integrity": "sha512-MvPJgF+ORwgK04a1CY5itO4pwdAOFIRqczlNEHL62+4Ocvj1d61GWRqIdeX1BNCKno6fdPC6TksUHCZMGsq26g==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.11.1.tgz", + "integrity": "sha512-yGKpAYkBm/Q2hZg476vRUAvd9lAccjjSvzU5nYy3BSQbKTPy7uopx7JEpwk2vSuw4weTMZzWF64z9/gp/K5RCg==", "dev": true, "license": "MIT", "dependencies": { @@ -10823,13 +9540,13 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -10852,20 +9569,22 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/eslint/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/eslint/node_modules/chalk": { @@ -10885,47 +9604,44 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, + "license": "Apache-2.0", "engines": { - "node": ">=7.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/eslint/node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "flat-cache": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=16.0.0" } }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/eslint/node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, "engines": { - "node": ">=8" + "node": ">=16" } }, "node_modules/eslint/node_modules/json-schema-traverse": { @@ -10935,17 +9651,17 @@ "dev": true, "license": "MIT" }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "has-flag": "^4.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=8" + "node": "*" } }, "node_modules/espree": { @@ -10966,6 +9682,19 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -11154,28 +9883,36 @@ } }, "node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">=16.17" + "node": ">=10" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -11354,6 +10091,20 @@ "bser": "2.1.1" } }, + "node_modules/fdir": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz", + "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==", + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, "node_modules/feed": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/feed/-/feed-4.2.2.tgz", @@ -11382,17 +10133,41 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.1.0.tgz", + "integrity": "sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^4.0.0" + "flat-cache": "^5.0.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=18" + } + }, + "node_modules/file-entry-cache/node_modules/flat-cache": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz", + "integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.3.1", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=18" } }, "node_modules/fill-range": { @@ -11477,17 +10252,18 @@ } }, "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "license": "MIT", "dependencies": { "flatted": "^3.2.9", - "keyv": "^4.5.4" + "keyv": "^4.5.3", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=16" + "node": "^10.12.0 || >=12.0.0" } }, "node_modules/flatted": { @@ -11548,24 +10324,53 @@ "yarn": ">=1.0.0" }, "peerDependencies": { - "typescript": ">3.6.0", - "webpack": "^5.11.0" + "typescript": ">3.6.0", + "webpack": "^5.11.0" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { @@ -11585,26 +10390,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/cosmiconfig": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", @@ -11637,27 +10422,43 @@ "node": ">=12" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">=8" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/yaml": { @@ -11755,20 +10556,6 @@ "dev": true, "license": "ISC" }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -11879,12 +10666,13 @@ } }, "node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=16" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -11928,22 +10716,23 @@ "license": "ISC" }, "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", + "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": "*" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -11968,6 +10757,21 @@ "devOptional": true, "license": "BSD-2-Clause" }, + "node_modules/glob/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/global-directory": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", @@ -11986,35 +10790,31 @@ } }, "node_modules/global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "dev": true, "license": "MIT", "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" + "global-prefix": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, "node_modules/global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dev": true, "license": "MIT", "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, "node_modules/global-prefix/node_modules/ini": { @@ -12038,16 +10838,13 @@ } }, "node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, "node_modules/globalthis": { @@ -12202,13 +10999,13 @@ } }, "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/has-property-descriptors": { @@ -12525,16 +11322,6 @@ "node": ">=12" } }, - "node_modules/html-minifier-terser/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, "node_modules/html-tags": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", @@ -12591,6 +11378,36 @@ } } }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/http-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", @@ -12621,12 +11438,13 @@ } }, "node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, "license": "Apache-2.0", "engines": { - "node": ">=16.17.0" + "node": ">=10.17.0" } }, "node_modules/humanize-ms": { @@ -12858,24 +11676,8 @@ "through": "^2.3.6", "wrap-ansi": "^7.0.0" }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/inquirer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": ">=12.0.0" } }, "node_modules/inquirer/node_modules/chalk": { @@ -12895,44 +11697,14 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/inquirer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/inquirer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/inquirer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/inquirer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/inquirer/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" @@ -13451,12 +12223,13 @@ } }, "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -13651,16 +12424,6 @@ "node": ">=10" } }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/istanbul-lib-report/node_modules/make-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", @@ -13677,19 +12440,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", @@ -13747,18 +12497,18 @@ } }, "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.2.tgz", + "integrity": "sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==", "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, + "engines": { + "node": "20 || >=22" + }, "funding": { "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" } }, "node_modules/jest": { @@ -13803,122 +12553,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-changed-files/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/jest-changed-files/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-changed-files/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/jest-changed-files/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-changed-files/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-changed-files/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-changed-files/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-changed-files/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/jest-changed-files/node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/jest-circus": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", @@ -13945,88 +12579,27 @@ "pretty-format": "^29.7.0", "pure-rand": "^6.0.0", "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-circus/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/jest-circus/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-circus/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-circus/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-circus/node_modules/dedent": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", - "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-circus/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-circus/node_modules/pretty-format": { @@ -14064,19 +12637,6 @@ "dev": true, "license": "MIT" }, - "node_modules/jest-circus/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-cli": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", @@ -14111,22 +12671,6 @@ } } }, - "node_modules/jest-cli/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-cli/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -14144,49 +12688,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-cli/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-cli/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-cli/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-cli/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-config": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", @@ -14233,20 +12734,22 @@ } } }, - "node_modules/jest-config/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/jest-config/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-config/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/jest-config/node_modules/chalk": { @@ -14266,34 +12769,39 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-config/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/jest-config/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "color-name": "~1.1.4" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=7.0.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-config/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-config/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-config/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=8" + "node": "*" } }, "node_modules/jest-config/node_modules/pretty-format": { @@ -14331,19 +12839,6 @@ "dev": true, "license": "MIT" }, - "node_modules/jest-config/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-diff": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", @@ -14360,22 +12855,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-diff/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-diff/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -14393,36 +12872,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-diff/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-diff/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-diff/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/jest-diff/node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -14458,19 +12907,6 @@ "dev": true, "license": "MIT" }, - "node_modules/jest-diff/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-docblock": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", @@ -14501,22 +12937,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-each/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-each/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -14531,37 +12951,7 @@ "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-each/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-each/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-each/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-each/node_modules/pretty-format": { @@ -14599,19 +12989,6 @@ "dev": true, "license": "MIT" }, - "node_modules/jest-each/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-environment-jsdom": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", @@ -14710,6 +13087,29 @@ "node": ">=10.12.0" } }, + "node_modules/jest-junit/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-junit/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/jest-leak-detector": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", @@ -14775,22 +13175,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-matcher-utils/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -14808,36 +13192,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-matcher-utils/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-matcher-utils/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-matcher-utils/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/jest-matcher-utils/node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -14873,19 +13227,6 @@ "dev": true, "license": "MIT" }, - "node_modules/jest-matcher-utils/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-message-util": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", @@ -14907,22 +13248,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-message-util/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -14940,36 +13265,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-message-util/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-message-util/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-message-util/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/jest-message-util/node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -15005,19 +13300,6 @@ "dev": true, "license": "MIT" }, - "node_modules/jest-message-util/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-mock": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", @@ -15096,22 +13378,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-resolve/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-resolve/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -15129,49 +13395,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-resolve/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-resolve/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-resolve/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-runner": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", @@ -15205,80 +13428,21 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runner/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-runner/node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/jest-runner/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-runner/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-runner/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-runner/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/jest-runtime": { @@ -15315,20 +13479,22 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/jest-runtime/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-runtime/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/jest-runtime/node_modules/chalk": { @@ -15348,47 +13514,39 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/jest-runtime/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "color-name": "~1.1.4" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-runtime/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-runtime/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-runtime/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/jest-runtime/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "has-flag": "^4.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=8" + "node": "*" } }, "node_modules/jest-snapshot": { @@ -15423,22 +13581,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-snapshot/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -15456,36 +13598,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-snapshot/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-snapshot/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/jest-snapshot/node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -15521,19 +13633,6 @@ "dev": true, "license": "MIT" }, - "node_modules/jest-snapshot/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-util": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", @@ -15552,22 +13651,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-util/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -15585,47 +13668,17 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-util/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-util/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-util/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-util/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" - } - }, - "node_modules/jest-util/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" + "node": ">=8.6" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/jest-validate": { @@ -15646,22 +13699,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-validate/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-validate/node_modules/camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", @@ -15692,36 +13729,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-validate/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-validate/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-validate/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/jest-validate/node_modules/pretty-format": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", @@ -15757,19 +13764,6 @@ "dev": true, "license": "MIT" }, - "node_modules/jest-validate/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-watcher": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", @@ -15790,22 +13784,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-watcher/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-watcher/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -15823,49 +13801,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-watcher/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/jest-watcher/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-watcher/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-watcher/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/jest-worker": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", @@ -15882,16 +13817,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -16210,6 +14135,137 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/lint-staged/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/lint-staged/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/lint-staged/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/listr2": { "version": "8.2.5", "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.5.tgz", @@ -16227,18 +14283,6 @@ "node": ">=18.0.0" } }, - "node_modules/listr2/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, "node_modules/listr2/node_modules/ansi-styles": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", @@ -16274,21 +14318,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/listr2/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/listr2/node_modules/wrap-ansi": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", @@ -16410,85 +14439,26 @@ }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/log-symbols/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/log-update": { @@ -16525,18 +14495,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-update/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, "node_modules/log-update/node_modules/ansi-styles": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", @@ -16649,21 +14607,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-update/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/log-update/node_modules/wrap-ansi": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", @@ -17266,13 +15209,6 @@ "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", "license": "MIT" }, - "node_modules/mdn-data": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.1.tgz", - "integrity": "sha512-rsfnCbOHjqrhWxwt5/wtSLzpoKTzW7OXdT5lLOIH1OTYhWu9rRJveGq0sKvDZODABH7RX+uoR+DYcpFnq4Tf6Q==", - "dev": true, - "license": "CC0-1.0" - }, "node_modules/memfs": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", @@ -18080,6 +16016,18 @@ "node": ">=8.6" } }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -18102,15 +16050,13 @@ } }, "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, "node_modules/mimic-function": { @@ -18136,16 +16082,18 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/minimist": { @@ -18347,6 +16295,53 @@ "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" } }, + "node_modules/next/node_modules/@next/env": { + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.0.3.tgz", + "integrity": "sha512-t9Xy32pjNOvVn2AS+Utt6VmyrshbpfUMhIjFO60gI58deSo/KgLOp31XZ4O+kY/Is8WAGYwA5gR7kOb1eORDBA==", + "license": "MIT" + }, + "node_modules/next/node_modules/@next/swc-linux-x64-gnu": { + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.0.3.tgz", + "integrity": "sha512-gWL/Cta1aPVqIGgDb6nxkqy06DkwJ9gAnKORdHWX1QBbSZZB+biFYPFti8aKIQL7otCE1pjyPaXpFzGeG2OS2w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/next/node_modules/@next/swc-linux-x64-musl": { + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.0.3.tgz", + "integrity": "sha512-QQEMwFd8r7C0GxQS62Zcdy6GKx999I/rTO2ubdXEe+MlZk9ZiinsrjwoiBL5/57tfyjikgh6GOU2WRQVUej3UA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/next/node_modules/@swc/helpers": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.13.tgz", + "integrity": "sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/next/node_modules/postcss": { "version": "8.4.31", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", @@ -18375,6 +16370,29 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/next/node_modules/styled-jsx": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", + "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", + "license": "MIT", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, "node_modules/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", @@ -18572,30 +16590,16 @@ } }, "node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, "license": "MIT", "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "path-key": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/nth-check": { @@ -18763,15 +16767,16 @@ } }, "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, "license": "MIT", "dependencies": { - "mimic-fn": "^4.0.0" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">=12" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -18889,22 +16894,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ora/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/ora/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -18922,44 +16911,14 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/ora/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/ora/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/ora/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/ora/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" @@ -19167,27 +17126,30 @@ "license": "MIT" }, "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { - "node": ">=16 || 14 >=14.18" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", + "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -19215,12 +17177,12 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -19400,6 +17362,37 @@ "postcss": "^8.4.21" } }, + "node_modules/postcss-bem-linter/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss-bem-linter/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/postcss-bem-linter/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/postcss-calc": { "version": "10.0.2", "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-10.0.2.tgz", @@ -19885,6 +17878,13 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/pretty-format/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true, + "license": "MIT" + }, "node_modules/proc-log": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", @@ -19952,13 +17952,6 @@ "react-is": "^16.13.1" } }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true, - "license": "MIT" - }, "node_modules/property-information": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", @@ -20124,6 +18117,19 @@ "typescript": ">= 4.3.x" } }, + "node_modules/react-docgen/node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/react-dom": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", @@ -20138,9 +18144,9 @@ } }, "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "dev": true, "license": "MIT" }, @@ -20247,21 +18253,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -20274,6 +18265,18 @@ "node": ">=8.10.0" } }, + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/reading-time": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz", @@ -21694,97 +19697,17 @@ "strip-ansi": "^6.0.1" } }, - "node_modules/renderkid/node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/renderkid/node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "node_modules/renderkid/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.2.0" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/renderkid/node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" + "node": ">=8" } }, "node_modules/require-directory": { @@ -21873,6 +19796,58 @@ "node": ">=0.10.0" } }, + "node_modules/resolve-dir/node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-dir/node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-dir/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true, + "license": "ISC" + }, + "node_modules/resolve-dir/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -21905,42 +19880,16 @@ }, "node_modules/restore-cursor": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/restore-cursor/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/restore-cursor/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/restore-cursor/node_modules/signal-exit": { @@ -21993,6 +19942,59 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rimraf/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -22143,58 +20145,25 @@ } }, "node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "devOptional": true, + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">= 10.13.0" + "node": ">= 12.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" } }, - "node_modules/schema-utils/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/schema-utils/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "devOptional": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/schema-utils/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "devOptional": true, - "license": "MIT" - }, "node_modules/section-matter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", @@ -22628,6 +20597,19 @@ "node": ">=10" } }, + "node_modules/string-length/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -22657,6 +20639,12 @@ "node": ">=8" } }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -22666,6 +20654,24 @@ "node": ">=8" } }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, "node_modules/string-width/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -22675,6 +20681,18 @@ "node": ">=8" } }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/string.prototype.includes": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", @@ -22795,15 +20813,18 @@ } }, "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/strip-ansi-cjs": { @@ -22819,6 +20840,18 @@ "node": ">=8" } }, + "node_modules/strip-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, "node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -22839,15 +20872,13 @@ } }, "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, "node_modules/strip-indent": { @@ -22905,29 +20936,6 @@ "inline-style-parser": "0.2.4" } }, - "node_modules/styled-jsx": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", - "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", - "license": "MIT", - "dependencies": { - "client-only": "0.0.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "babel-plugin-macros": { - "optional": true - } - } - }, "node_modules/stylelint": { "version": "16.10.0", "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.10.0.tgz", @@ -23071,67 +21079,19 @@ "peerDependencies": { "stylelint": "^16.2.1" } - }, - "node_modules/stylelint/node_modules/balanced-match": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", - "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", - "dev": true, - "license": "MIT" - }, - "node_modules/stylelint/node_modules/file-entry-cache": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.1.0.tgz", - "integrity": "sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/stylelint/node_modules/flat-cache": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz", - "integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.3.1", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/stylelint/node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "global-prefix": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/stylelint/node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + }, + "node_modules/stylelint/node_modules/css-tree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.0.1.tgz", + "integrity": "sha512-8Fxxv+tGhORlshCdCwnNJytvlvq46sOLSYEx2ZIGurahWvMucSRnyjPA3AmrMq4VPRYbHVpWj5VkiVasrM2H4Q==", "dev": true, "license": "MIT", "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" + "mdn-data": "2.12.1", + "source-map-js": "^1.0.1" }, "engines": { - "node": ">=6" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, "node_modules/stylelint/node_modules/ignore": { @@ -23144,39 +21104,12 @@ "node": ">= 4" } }, - "node_modules/stylelint/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true, - "license": "ISC" - }, - "node_modules/stylelint/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/stylelint/node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "node_modules/stylelint/node_modules/mdn-data": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.1.tgz", + "integrity": "sha512-rsfnCbOHjqrhWxwt5/wtSLzpoKTzW7OXdT5lLOIH1OTYhWu9rRJveGq0sKvDZODABH7RX+uoR+DYcpFnq4Tf6Q==", "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } + "license": "CC0-1.0" }, "node_modules/sucrase": { "version": "3.35.0", @@ -23200,15 +21133,6 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/sucrase/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/sucrase/node_modules/commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", @@ -23238,16 +21162,38 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/sucrase/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "license": "ISC", + "node_modules/sucrase/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.1" + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/sucrase/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/sucrase/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -23270,16 +21216,16 @@ } }, "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/supports-hyperlinks": { @@ -23299,29 +21245,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/supports-hyperlinks/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -23404,42 +21327,6 @@ "node": ">=10.0.0" } }, - "node_modules/table/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/table/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/table/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, "node_modules/table/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -23468,6 +21355,19 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, + "node_modules/table/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/tailwindcss": { "version": "3.4.15", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.15.tgz", @@ -23595,14 +21495,31 @@ } } }, - "node_modules/terser-webpack-plugin/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "devOptional": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "devOptional": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" } }, "node_modules/terser-webpack-plugin/node_modules/jest-worker": { @@ -23620,6 +21537,32 @@ "node": ">= 10.13.0" } }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/terser-webpack-plugin/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -23676,7 +21619,60 @@ "minimatch": "^3.0.4" }, "engines": { - "node": ">=8" + "node": ">=8" + } + }, + "node_modules/test-exclude/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, "node_modules/text-table": { @@ -23734,32 +21730,6 @@ "node": ">=12.0.0" } }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz", - "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==", - "license": "MIT", - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/tinyrainbow": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", @@ -23948,32 +21918,6 @@ "turbo-windows-arm64": "2.3.0" } }, - "node_modules/turbo-darwin-64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/turbo-darwin-64/-/turbo-darwin-64-2.3.0.tgz", - "integrity": "sha512-pji+D49PhFItyQjf2QVoLZw2d3oRGo8gJgKyOiRzvip78Rzie74quA8XNwSg/DuzM7xx6gJ3p2/LylTTlgZXxQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/turbo-darwin-arm64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/turbo-darwin-arm64/-/turbo-darwin-arm64-2.3.0.tgz", - "integrity": "sha512-AJrGIL9BO41mwDF/IBHsNGwvtdyB911vp8f5mbNo1wG66gWTvOBg7WCtYQBvCo11XTenTfXPRSsAb7w3WAZb6w==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, "node_modules/turbo-linux-64": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/turbo-linux-64/-/turbo-linux-64-2.3.0.tgz", @@ -23987,45 +21931,6 @@ "linux" ] }, - "node_modules/turbo-linux-arm64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/turbo-linux-arm64/-/turbo-linux-arm64-2.3.0.tgz", - "integrity": "sha512-HUbDLJlvd/hxuyCNO0BmEWYQj0TugRMvSQeG8vHJH+Lq8qOgDAe7J0K73bFNbZejZQxW3C3XEiZFB3pnpO78+A==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/turbo-windows-64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/turbo-windows-64/-/turbo-windows-64-2.3.0.tgz", - "integrity": "sha512-c5rxrGNTYDWX9QeMzWLFE9frOXnKjHGEvQMp1SfldDlbZYsloX9UKs31TzUThzfTgTiz8NYuShaXJ2UvTMnV/g==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/turbo-windows-arm64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/turbo-windows-arm64/-/turbo-windows-arm64-2.3.0.tgz", - "integrity": "sha512-7qfUuYhfIVb1AZgs89DxhXK+zZez6O2ocmixEQ4hXZK7ytnBt5vaz2zGNJJKFNYIL5HX1C3tuHolnpNgDNCUIg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -24184,6 +22089,173 @@ } } }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.14.0.tgz", + "integrity": "sha512-tqp8H7UWFaZj0yNO6bycd5YjMwxa6wIHOLZvWPkidwbgLCsBMetQoGj7DPuAlWa2yGO3H48xmPwjhsSPPCGU5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.14.0", + "@typescript-eslint/type-utils": "8.14.0", + "@typescript-eslint/utils": "8.14.0", + "@typescript-eslint/visitor-keys": "8.14.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.14.0.tgz", + "integrity": "sha512-2p82Yn9juUJq0XynBXtFCyrBDb6/dJombnz6vbo6mgQEtWHfvHbQuEa9kAOVIt1c9YFwi7H6WxtPj1kg+80+RA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "8.14.0", + "@typescript-eslint/types": "8.14.0", + "@typescript-eslint/typescript-estree": "8.14.0", + "@typescript-eslint/visitor-keys": "8.14.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/scope-manager": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.14.0.tgz", + "integrity": "sha512-aBbBrnW9ARIDn92Zbo7rguLnqQ/pOrUguVpbUwzOhkFg2npFDwTgPGqFqE0H5feXcOoJOfX3SxlJaKEVtq54dw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.14.0", + "@typescript-eslint/visitor-keys": "8.14.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/type-utils": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.14.0.tgz", + "integrity": "sha512-Xcz9qOtZuGusVOH5Uk07NGs39wrKkf3AxlkK79RBK6aJC1l03CobXjJbwBPSidetAOV+5rEVuiT1VSBUOAsanQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.14.0", + "@typescript-eslint/utils": "8.14.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/types": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.14.0.tgz", + "integrity": "sha512-yjeB9fnO/opvLJFAsPNYlKPnEM8+z4og09Pk504dkqonT02AyL5Z9SSqlE0XqezS93v6CXn49VHvB2G7XSsl0g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.14.0.tgz", + "integrity": "sha512-OPXPLYKGZi9XS/49rdaCbR5j/S14HazviBlUQFvSKz3npr3NikF+mrgK7CFVur6XEt95DZp/cmke9d5i3vtVnQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "8.14.0", + "@typescript-eslint/visitor-keys": "8.14.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.14.0.tgz", + "integrity": "sha512-vG0XZo8AdTH9OE6VFRwAZldNc7qtJ/6NLGWak+BtENuEUXGZgFpihILPiBvKXvJ2nFu27XNGC6rKiwuaoMbYzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.14.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/uglify-js": { "version": "3.19.3", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", @@ -24263,24 +22335,14 @@ "trough": "^2.0.0", "unist-util-inspect": "^8.0.0", "vfile": "^6.0.0", - "vfile-message": "^4.0.0", - "vfile-reporter": "^8.0.0", - "vfile-statistics": "^3.0.0", - "yaml": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unified-engine/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" + "vfile-message": "^4.0.0", + "vfile-reporter": "^8.0.0", + "vfile-statistics": "^3.0.0", + "yaml": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/unified-engine/node_modules/glob": { @@ -24327,6 +22389,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/unified-engine/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/unified-engine/node_modules/json-parse-even-better-errors": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", @@ -24347,21 +22425,12 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/unified-engine/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/unified-engine/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "license": "ISC" }, "node_modules/unified-engine/node_modules/parse-json": { "version": "7.1.1", @@ -24383,6 +22452,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/unified-engine/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/unified-engine/node_modules/type-fest": { "version": "3.13.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", @@ -24713,16 +22799,6 @@ "dev": true, "license": "MIT" }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/uvu": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", @@ -24866,19 +22942,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/vfile-reporter/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, "node_modules/vfile-reporter/node_modules/emoji-regex": { "version": "10.4.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", @@ -24904,22 +22967,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/vfile-reporter/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/vfile-reporter/node_modules/supports-color": { "version": "9.4.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", @@ -24964,16 +23011,16 @@ } }, "node_modules/vue": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", - "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", + "version": "3.5.12", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.12.tgz", + "integrity": "sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==", "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.13", - "@vue/compiler-sfc": "3.5.13", - "@vue/runtime-dom": "3.5.13", - "@vue/server-renderer": "3.5.13", - "@vue/shared": "3.5.13" + "@vue/compiler-dom": "3.5.12", + "@vue/compiler-sfc": "3.5.12", + "@vue/runtime-dom": "3.5.12", + "@vue/server-renderer": "3.5.12", + "@vue/shared": "3.5.12" }, "peerDependencies": { "typescript": "*" @@ -25133,26 +23180,6 @@ } } }, - "node_modules/webpack-dev-middleware/node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/webpack-hot-middleware": { "version": "2.26.1", "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.26.1.tgz", @@ -25165,6 +23192,19 @@ "strip-ansi": "^6.0.0" } }, + "node_modules/webpack-hot-middleware/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/webpack-sources": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", @@ -25182,6 +23222,33 @@ "dev": true, "license": "MIT" }, + "node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "devOptional": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, "node_modules/webpack/node_modules/eslint-scope": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", @@ -25206,6 +23273,32 @@ "node": ">=4.0" } }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/whatwg-encoding": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", @@ -25407,75 +23500,31 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" } }, - "node_modules/wrap-ansi-cjs/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" } }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -25484,26 +23533,19 @@ "license": "ISC" }, "node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" + "signal-exit": "^4.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/write-file-atomic/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, "node_modules/ws": { "version": "8.18.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", @@ -25653,6 +23695,40 @@ "engines": { "node": ">=20" } + }, + "packages/ui-components": { + "name": "@node-core/ui-components", + "dependencies": { + "classnames": "^2.5.1" + }, + "devDependencies": { + "@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", + "react": "^18.3.1", + "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" + }, + "engines": { + "node": ">=20" + } } } } diff --git a/packages/ui-components/.storybook/main.ts b/packages/ui-components/.storybook/main.ts new file mode 100644 index 0000000000000..a7642fb25a7e4 --- /dev/null +++ b/packages/ui-components/.storybook/main.ts @@ -0,0 +1,34 @@ +import type { StorybookConfig } from '@storybook/react-webpack5'; + +const config: StorybookConfig = { + stories: ['../**/*.stories.tsx'], + logLevel: 'error', + typescript: { reactDocgen: false, check: false }, + core: { disableTelemetry: true, disableWhatsNewNotifications: true }, + framework: '@storybook/react-webpack5', + swc: () => ({ jsc: { transform: { react: { runtime: 'automatic' } } } }), + addons: [ + '@storybook/addon-webpack5-compiler-swc', + '@storybook/addon-controls', + '@storybook/addon-interactions', + '@storybook/addon-themes', + '@storybook/addon-viewport', + { + name: '@storybook/addon-styling-webpack', + options: { + rules: [ + { + test: /\.css$/, + use: [ + 'style-loader', + { loader: 'css-loader', options: { url: false } }, + 'postcss-loader', + ], + }, + ], + }, + }, + ], +}; + +export default config; diff --git a/packages/ui-components/.storybook/preview-head.html b/packages/ui-components/.storybook/preview-head.html new file mode 100644 index 0000000000000..f33e88387634f --- /dev/null +++ b/packages/ui-components/.storybook/preview-head.html @@ -0,0 +1,20 @@ + + + + + + diff --git a/packages/ui-components/.storybook/preview.tsx b/packages/ui-components/.storybook/preview.tsx new file mode 100644 index 0000000000000..0c0e9b5f37514 --- /dev/null +++ b/packages/ui-components/.storybook/preview.tsx @@ -0,0 +1,25 @@ +import { withThemeByDataAttribute } from '@storybook/addon-themes'; +import type { Preview, ReactRenderer } from '@storybook/react'; + +import { + STORYBOOK_MODES, + STORYBOOK_SIZES, +} from '../../../.storybook/constants'; + +import './tailwind.css'; + +const preview: Preview = { + parameters: { + chromatic: { modes: STORYBOOK_MODES }, + viewport: { defaultViewport: 'large', viewports: STORYBOOK_SIZES }, + }, + decorators: [ + withThemeByDataAttribute({ + themes: { light: '', dark: 'dark' }, + defaultTheme: 'light', + attributeName: 'data-theme', + }), + ], +}; + +export default preview; diff --git a/packages/ui-components/.storybook/tailwind.css b/packages/ui-components/.storybook/tailwind.css new file mode 100644 index 0000000000000..f333c163b2b82 --- /dev/null +++ b/packages/ui-components/.storybook/tailwind.css @@ -0,0 +1,7 @@ +@import 'https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=Open+Sans:ital,wght@0,300..800;1,300..800&display=swap'; +@import 'tailwindcss/base'; +@import 'tailwindcss/components'; +@import 'tailwindcss/utilities'; +@import '../../../apps/site/styles/base.css'; +@import '../../../apps/site/styles/markdown.css'; +@import '../../../apps/site/styles/effects.css'; diff --git a/packages/ui-components/.stylelintignore b/packages/ui-components/.stylelintignore new file mode 100644 index 0000000000000..20687473be0b3 --- /dev/null +++ b/packages/ui-components/.stylelintignore @@ -0,0 +1 @@ +storybook-static diff --git a/packages/ui-components/.stylelintrc.mjs b/packages/ui-components/.stylelintrc.mjs new file mode 100644 index 0000000000000..3fea6d8b268c8 --- /dev/null +++ b/packages/ui-components/.stylelintrc.mjs @@ -0,0 +1,45 @@ +// These are all the custom `@` (at) rules that we use within our custom PostCSS plugins +const CUSTOM_AT_RULES = [ + // Tailwind-specific at-rules + 'apply', + 'layer', + 'responsive', + 'screen', + 'tailwind', + 'variants', + // PostCSS-specific at-rules + 'define-mixin', + 'mixin', +]; + +// Enforces certain selectors to be only in camelCase notation +// We use these for id selectors and classname selectors +const ONLY_ALLOW_CAMEL_CASE_SELECTORS = [ + /^(?:[a-z]+(?:[A-Z][a-z]*)*)$/, + { message: s => `Expected '${s}' to be in camelCase` }, +]; + +export default { + extends: ['stylelint-config-standard'], + plugins: ['stylelint-order', 'stylelint-selector-bem-pattern'], + rules: { + // Enforces Element Class Names to be camelCase + 'selector-class-pattern': ONLY_ALLOW_CAMEL_CASE_SELECTORS, + // Enforces Element IDs to be camelCase + 'selector-id-pattern': ONLY_ALLOW_CAMEL_CASE_SELECTORS, + // Allow Tailwind-based CSS Rules + 'at-rule-no-unknown': [true, { ignoreAtRules: CUSTOM_AT_RULES }], + // Allow the Global CSS Selector + 'selector-pseudo-class-no-unknown': [ + true, + { ignorePseudoClasses: ['global'] }, + ], + // Enforces the order of the CSS properties to be in alphabetical order + 'order/properties-alphabetical-order': true, + 'no-descending-specificity': null, + // Disables the Level-4 Media Queries; Since they're more exotic and less known + 'media-feature-range-notation': 'prefix', + // Adopts the import notation from `postcss-import` + 'import-notation': 'string', + }, +}; diff --git a/apps/site/components/Icons/HexagonGrid.stories.tsx b/packages/ui-components/Icons/HexagonGrid.stories.tsx similarity index 77% rename from apps/site/components/Icons/HexagonGrid.stories.tsx rename to packages/ui-components/Icons/HexagonGrid.stories.tsx index 731b2a5ad237c..c5d56a3674728 100644 --- a/apps/site/components/Icons/HexagonGrid.stories.tsx +++ b/packages/ui-components/Icons/HexagonGrid.stories.tsx @@ -1,6 +1,6 @@ import type { Meta as MetaObj, StoryObj } from '@storybook/react'; -import HexagonGrid from '@/components/Icons/HexagonGrid'; +import HexagonGrid from '@node-core/ui-components/Icons/HexagonGrid'; type Story = StoryObj; type Meta = MetaObj; diff --git a/apps/site/components/Icons/HexagonGrid.tsx b/packages/ui-components/Icons/HexagonGrid.tsx similarity index 100% rename from apps/site/components/Icons/HexagonGrid.tsx rename to packages/ui-components/Icons/HexagonGrid.tsx diff --git a/apps/site/components/Icons/Logos/JsIconGreen.tsx b/packages/ui-components/Icons/Logos/JsGreen.tsx similarity index 95% rename from apps/site/components/Icons/Logos/JsIconGreen.tsx rename to packages/ui-components/Icons/Logos/JsGreen.tsx index dc835cb1d2af7..7071553a28a67 100644 --- a/apps/site/components/Icons/Logos/JsIconGreen.tsx +++ b/packages/ui-components/Icons/Logos/JsGreen.tsx @@ -1,6 +1,6 @@ import type { FC, SVGProps } from 'react'; -const JsIconGreen: FC> = props => ( +const JsGreenIcon: FC> = props => ( > = props => ( ); -export default JsIconGreen; +export default JsGreenIcon; diff --git a/apps/site/components/Icons/Logos/JsIconWhite.tsx b/packages/ui-components/Icons/Logos/JsWhite.tsx similarity index 94% rename from apps/site/components/Icons/Logos/JsIconWhite.tsx rename to packages/ui-components/Icons/Logos/JsWhite.tsx index 1063212ba130a..0f388784a11c6 100644 --- a/apps/site/components/Icons/Logos/JsIconWhite.tsx +++ b/packages/ui-components/Icons/Logos/JsWhite.tsx @@ -1,8 +1,8 @@ import type { FC } from 'react'; -import type { TailwindSVG } from '@/types/og'; +import type { TailwindSVG } from '@node-core/ui-components/types'; -const JsIconWhite: FC = props => ( +const JsWhiteIcon: FC = props => ( = props => ( ); -export default JsIconWhite; +export default JsWhiteIcon; diff --git a/apps/site/components/Icons/Logos/Nodejs.tsx b/packages/ui-components/Icons/Logos/Nodejs.tsx similarity index 98% rename from apps/site/components/Icons/Logos/Nodejs.tsx rename to packages/ui-components/Icons/Logos/Nodejs.tsx index d614cb05e223e..32d0f3dc52119 100644 --- a/apps/site/components/Icons/Logos/Nodejs.tsx +++ b/packages/ui-components/Icons/Logos/Nodejs.tsx @@ -1,13 +1,13 @@ import classNames from 'classnames'; import type { FC, SVGProps } from 'react'; -import type { LogoVariant } from '@/types'; +import type { LogoVariant } from '@node-core/ui-components/types'; type NodeJsLogoProps = SVGProps & { variant?: LogoVariant; }; -const Nodejs: FC = ({ +const NodejsIcon: FC = ({ className, variant = 'default', ...props @@ -180,4 +180,4 @@ const Nodejs: FC = ({ ); -export default Nodejs; +export default NodejsIcon; diff --git a/apps/site/components/Icons/Logos/NodejsStackedBlack.tsx b/packages/ui-components/Icons/Logos/NodejsStackedBlack.tsx similarity index 98% rename from apps/site/components/Icons/Logos/NodejsStackedBlack.tsx rename to packages/ui-components/Icons/Logos/NodejsStackedBlack.tsx index 1401ff613303d..51f41235594ad 100644 --- a/apps/site/components/Icons/Logos/NodejsStackedBlack.tsx +++ b/packages/ui-components/Icons/Logos/NodejsStackedBlack.tsx @@ -1,6 +1,6 @@ import type { FC, SVGProps } from 'react'; -const NodejsStackedBlack: FC> = props => ( +const NodejsStackedBlackIcon: FC> = props => ( > = props => ( ); -export default NodejsStackedBlack; +export default NodejsStackedBlackIcon; diff --git a/apps/site/components/Icons/Logos/NodejsStackedDark.tsx b/packages/ui-components/Icons/Logos/NodejsStackedDark.tsx similarity index 98% rename from apps/site/components/Icons/Logos/NodejsStackedDark.tsx rename to packages/ui-components/Icons/Logos/NodejsStackedDark.tsx index b4082253c667b..fdce4911e705b 100644 --- a/apps/site/components/Icons/Logos/NodejsStackedDark.tsx +++ b/packages/ui-components/Icons/Logos/NodejsStackedDark.tsx @@ -1,6 +1,6 @@ import type { FC, SVGProps } from 'react'; -const NodejsStackedDark: FC> = props => ( +const NodejsStackedDarkIcon: FC> = props => ( > = props => ( ); -export default NodejsStackedDark; +export default NodejsStackedDarkIcon; diff --git a/apps/site/components/Icons/Logos/NodejsStackedLight.tsx b/packages/ui-components/Icons/Logos/NodejsStackedLight.tsx similarity index 98% rename from apps/site/components/Icons/Logos/NodejsStackedLight.tsx rename to packages/ui-components/Icons/Logos/NodejsStackedLight.tsx index 6e47796744849..7c436610465dd 100644 --- a/apps/site/components/Icons/Logos/NodejsStackedLight.tsx +++ b/packages/ui-components/Icons/Logos/NodejsStackedLight.tsx @@ -1,6 +1,6 @@ import type { FC, SVGProps } from 'react'; -const NodejsStackedLight: FC> = props => ( +const NodejsStackedLightIcon: FC> = props => ( > = props => ( ); -export default NodejsStackedLight; +export default NodejsStackedLightIcon; diff --git a/apps/site/components/Icons/Logos/NodejsStackedWhite.tsx b/packages/ui-components/Icons/Logos/NodejsStackedWhite.tsx similarity index 98% rename from apps/site/components/Icons/Logos/NodejsStackedWhite.tsx rename to packages/ui-components/Icons/Logos/NodejsStackedWhite.tsx index 19d83835bb149..f88bb26ab8b2b 100644 --- a/apps/site/components/Icons/Logos/NodejsStackedWhite.tsx +++ b/packages/ui-components/Icons/Logos/NodejsStackedWhite.tsx @@ -1,6 +1,6 @@ import type { FC, SVGProps } from 'react'; -const NodejsStackedWhite: FC> = props => ( +const NodejsStackedWhiteIcon: FC> = props => ( > = props => ( ); -export default NodejsStackedWhite; +export default NodejsStackedWhiteIcon; diff --git a/apps/site/components/Icons/Platform/Apple.tsx b/packages/ui-components/Icons/Platform/Apple.tsx similarity index 91% rename from apps/site/components/Icons/Platform/Apple.tsx rename to packages/ui-components/Icons/Platform/Apple.tsx index fa15ee4df2abf..62a2cff1deaaf 100644 --- a/apps/site/components/Icons/Platform/Apple.tsx +++ b/packages/ui-components/Icons/Platform/Apple.tsx @@ -1,6 +1,6 @@ import type { FC, SVGProps } from 'react'; -const Apple: FC> = props => ( +const AppleIcon: FC> = props => ( > = props => ( ); -export default Apple; +export default AppleIcon; diff --git a/apps/site/components/Icons/Platform/Choco.tsx b/packages/ui-components/Icons/Platform/Choco.tsx similarity index 96% rename from apps/site/components/Icons/Platform/Choco.tsx rename to packages/ui-components/Icons/Platform/Choco.tsx index c07d3718b854a..1e63f790b9f07 100644 --- a/apps/site/components/Icons/Platform/Choco.tsx +++ b/packages/ui-components/Icons/Platform/Choco.tsx @@ -1,6 +1,6 @@ import type { FC, SVGProps } from 'react'; -const Choco: FC> = props => ( +const ChocoIcon: FC> = props => ( > = props => ( ); -export default Choco; +export default ChocoIcon; diff --git a/apps/site/components/Icons/Platform/Docker.tsx b/packages/ui-components/Icons/Platform/Docker.tsx similarity index 92% rename from apps/site/components/Icons/Platform/Docker.tsx rename to packages/ui-components/Icons/Platform/Docker.tsx index 37d16e72b2083..6bab379d2459a 100644 --- a/apps/site/components/Icons/Platform/Docker.tsx +++ b/packages/ui-components/Icons/Platform/Docker.tsx @@ -1,6 +1,6 @@ import type { FC, SVGProps } from 'react'; -const Docker: FC> = props => ( +const DockerIcon: FC> = props => ( > = props => ( ); -export default Docker; +export default DockerIcon; diff --git a/apps/site/components/Icons/Platform/FNM.tsx b/packages/ui-components/Icons/Platform/FNM.tsx similarity index 99% rename from apps/site/components/Icons/Platform/FNM.tsx rename to packages/ui-components/Icons/Platform/FNM.tsx index 90407358527b3..1337a3f49d1a2 100644 --- a/apps/site/components/Icons/Platform/FNM.tsx +++ b/packages/ui-components/Icons/Platform/FNM.tsx @@ -2,7 +2,7 @@ import type { FC, SVGProps } from 'react'; // @todo: replace with original vector (https://github.com/Schniz/fnm/issues/798#issuecomment-2068220441) // this is a rough tracing of the available raster image -const FNM: FC> = props => ( +const FNMIcon: FC> = props => ( > = props => ( ); -export default FNM; +export default FNMIcon; diff --git a/apps/site/components/Icons/Platform/Generic.tsx b/packages/ui-components/Icons/Platform/Generic.tsx similarity index 83% rename from apps/site/components/Icons/Platform/Generic.tsx rename to packages/ui-components/Icons/Platform/Generic.tsx index e2ae454f062a1..4112cbef00205 100644 --- a/apps/site/components/Icons/Platform/Generic.tsx +++ b/packages/ui-components/Icons/Platform/Generic.tsx @@ -1,6 +1,6 @@ import type { FC, SVGProps } from 'react'; -const Generic: FC> = props => ( +const GenericIcon: FC> = props => ( > = props => ( ); -export default Generic; +export default GenericIcon; diff --git a/apps/site/components/Icons/Platform/Homebrew.tsx b/packages/ui-components/Icons/Platform/Homebrew.tsx similarity index 97% rename from apps/site/components/Icons/Platform/Homebrew.tsx rename to packages/ui-components/Icons/Platform/Homebrew.tsx index b3961dda92af5..5029dc3a58f93 100644 --- a/apps/site/components/Icons/Platform/Homebrew.tsx +++ b/packages/ui-components/Icons/Platform/Homebrew.tsx @@ -1,6 +1,6 @@ import type { FC, SVGProps } from 'react'; -const Homebrew: FC> = props => ( +const HomebrewIcon: FC> = props => ( > = props => ( ); -export default Homebrew; +export default HomebrewIcon; diff --git a/apps/site/components/Icons/Platform/Linux.tsx b/packages/ui-components/Icons/Platform/Linux.tsx similarity index 99% rename from apps/site/components/Icons/Platform/Linux.tsx rename to packages/ui-components/Icons/Platform/Linux.tsx index 20d408e48ef2b..8f147fffd55fa 100644 --- a/apps/site/components/Icons/Platform/Linux.tsx +++ b/packages/ui-components/Icons/Platform/Linux.tsx @@ -1,6 +1,6 @@ import type { FC, SVGProps } from 'react'; -const Linux: FC> = props => ( +const LinuxIcon: FC> = props => ( > = props => ( ); -export default Linux; +export default LinuxIcon; diff --git a/apps/site/components/Icons/Platform/Microsoft.tsx b/packages/ui-components/Icons/Platform/Microsoft.tsx similarity index 80% rename from apps/site/components/Icons/Platform/Microsoft.tsx rename to packages/ui-components/Icons/Platform/Microsoft.tsx index 4567525dd2170..10973c3383004 100644 --- a/apps/site/components/Icons/Platform/Microsoft.tsx +++ b/packages/ui-components/Icons/Platform/Microsoft.tsx @@ -1,6 +1,6 @@ import type { FC, SVGProps } from 'react'; -const Microsoft: FC> = props => ( +const MicrosoftIcon: FC> = props => ( > = props => ( ); -export default Microsoft; +export default MicrosoftIcon; diff --git a/apps/site/components/Icons/Platform/NVM.tsx b/packages/ui-components/Icons/Platform/NVM.tsx similarity index 97% rename from apps/site/components/Icons/Platform/NVM.tsx rename to packages/ui-components/Icons/Platform/NVM.tsx index 04e4e0e9f43ca..a077a1632bb7e 100644 --- a/apps/site/components/Icons/Platform/NVM.tsx +++ b/packages/ui-components/Icons/Platform/NVM.tsx @@ -1,6 +1,6 @@ import type { FC, SVGProps } from 'react'; -const NVM: FC> = props => ( +const NVMIcon: FC> = props => ( > = props => ( ); -export default NVM; +export default NVMIcon; diff --git a/apps/site/components/Icons/Social/Bluesky.tsx b/packages/ui-components/Icons/Social/Bluesky.tsx similarity index 90% rename from apps/site/components/Icons/Social/Bluesky.tsx rename to packages/ui-components/Icons/Social/Bluesky.tsx index 9069be9b4ec6b..cd4a132990e4a 100644 --- a/apps/site/components/Icons/Social/Bluesky.tsx +++ b/packages/ui-components/Icons/Social/Bluesky.tsx @@ -1,6 +1,6 @@ import type { FC, SVGProps } from 'react'; -const Bluesky: FC> = props => ( +const BlueskyIcon: FC> = props => ( > = props => ( ); -export default Bluesky; +export default BlueskyIcon; diff --git a/apps/site/components/Icons/Social/GitHub.tsx b/packages/ui-components/Icons/Social/GitHub.tsx similarity index 94% rename from apps/site/components/Icons/Social/GitHub.tsx rename to packages/ui-components/Icons/Social/GitHub.tsx index 54c4cef57ba19..b76a6ac03753e 100644 --- a/apps/site/components/Icons/Social/GitHub.tsx +++ b/packages/ui-components/Icons/Social/GitHub.tsx @@ -1,6 +1,6 @@ import type { FC, SVGProps } from 'react'; -const GitHub: FC> = props => ( +const GitHubIcon: FC> = props => ( > = props => ( ); -export default GitHub; +export default GitHubIcon; diff --git a/apps/site/components/Icons/Social/LinkedIn.tsx b/packages/ui-components/Icons/Social/LinkedIn.tsx similarity index 85% rename from apps/site/components/Icons/Social/LinkedIn.tsx rename to packages/ui-components/Icons/Social/LinkedIn.tsx index c62c4a97e6ddf..b13c225e61154 100644 --- a/apps/site/components/Icons/Social/LinkedIn.tsx +++ b/packages/ui-components/Icons/Social/LinkedIn.tsx @@ -1,6 +1,6 @@ import type { FC, SVGProps } from 'react'; -const LinkedIn: FC> = props => ( +const LinkedInIcon: FC> = props => ( > = props => ( ); -export default LinkedIn; +export default LinkedInIcon; diff --git a/apps/site/components/Icons/Social/Mastodon.tsx b/packages/ui-components/Icons/Social/Mastodon.tsx similarity index 96% rename from apps/site/components/Icons/Social/Mastodon.tsx rename to packages/ui-components/Icons/Social/Mastodon.tsx index 18fa61f7ce353..f7d0acf628bbf 100644 --- a/apps/site/components/Icons/Social/Mastodon.tsx +++ b/packages/ui-components/Icons/Social/Mastodon.tsx @@ -1,6 +1,6 @@ import type { FC, SVGProps } from 'react'; -const Mastodon: FC> = props => ( +const MastodonIcon: FC> = props => ( > = props => ( ); -export default Mastodon; +export default MastodonIcon; diff --git a/apps/site/components/Icons/Social/Slack.tsx b/packages/ui-components/Icons/Social/Slack.tsx similarity index 92% rename from apps/site/components/Icons/Social/Slack.tsx rename to packages/ui-components/Icons/Social/Slack.tsx index afe504a20cb59..2ebba179b8e41 100644 --- a/apps/site/components/Icons/Social/Slack.tsx +++ b/packages/ui-components/Icons/Social/Slack.tsx @@ -1,6 +1,6 @@ import type { FC, SVGProps } from 'react'; -const Slack: FC> = props => ( +const SlackIcon: FC> = props => ( > = props => ( ); -export default Slack; +export default SlackIcon; diff --git a/apps/site/components/Icons/Social/Twitter.tsx b/packages/ui-components/Icons/Social/X.tsx similarity index 82% rename from apps/site/components/Icons/Social/Twitter.tsx rename to packages/ui-components/Icons/Social/X.tsx index 6567d311d7c1d..115c2b7f2023e 100644 --- a/apps/site/components/Icons/Social/Twitter.tsx +++ b/packages/ui-components/Icons/Social/X.tsx @@ -1,6 +1,6 @@ import type { FC, SVGProps } from 'react'; -const Twitter: FC> = props => ( +const XIcon: FC> = props => ( > = props => ( ); -export default Twitter; +export default XIcon; diff --git a/packages/ui-components/__design__/node-logos.stories.tsx b/packages/ui-components/__design__/node-logos.stories.tsx new file mode 100644 index 0000000000000..9ccae6b0650db --- /dev/null +++ b/packages/ui-components/__design__/node-logos.stories.tsx @@ -0,0 +1,60 @@ +import type { Meta as MetaObj, StoryObj } from '@storybook/react'; + +import JsGreenIcon from '@node-core/ui-components/Icons/Logos/JsGreen'; +import JsWhiteIcon from '@node-core/ui-components/Icons/Logos/JsWhite'; +import NodejsIcon from '@node-core/ui-components/Icons/Logos/Nodejs'; +import NodejsStackedBlackIcon from '@node-core/ui-components/Icons/Logos/NodejsStackedBlack'; +import NodejsStackedDarkIcon from '@node-core/ui-components/Icons/Logos/NodejsStackedDark'; +import NodejsStackedLightIcon from '@node-core/ui-components/Icons/Logos/NodejsStackedLight'; +import NodejsStackedWhiteIcon from '@node-core/ui-components/Icons/Logos/NodejsStackedWhite'; + +export const HorizontalLogo: StoryObj = { + render: () => , +}; + +export const PrideLogo: StoryObj = { + render: () => , +}; + +export const StackedLogos: StoryObj = { + render: () => ( +
+
+ + + + + + + +
+
+ ), +}; + +export const JSSymbols: StoryObj = { + render: () => ( +
+ + +
+ ), +}; + +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.
@@ -28,6 +27,7 @@ layout: home )} + {({ release }) => ( @@ -37,6 +37,7 @@ layout: home )} +
diff --git a/apps/site/pages/es/index.mdx b/apps/site/pages/es/index.mdx index 9dff1c26f04d9..ad0b661117331 100644 --- a/apps/site/pages/es/index.mdx +++ b/apps/site/pages/es/index.mdx @@ -4,134 +4,131 @@ 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) + + +
+

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 }) => ( - 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 یک محیط اجرای جاوااسکریپت متن‌باز، رایگان و چندسکویی است -که به توسعه دهندگان اجازه می‌دهد تا سرورها، وب اپلیکیشن‌ها -ابزارهای خط فرمان و اسکریپت‌ها را ایجاد کنند. - -
- -
- - {({ release }) => ( - <> - دانلود 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. - -
- -
- - {({ release }) => ( - <> - Unduh Node.js (LTS) + + +
+

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 }) => ( - 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 ---
- - -
-

Run JavaScript Everywhere

- -Node.js®は自由かつオープンソースでクロスプラットフォームに対応したJavaScript実行環境です。開発者にサーバー、ウェブアプリ、コマンドラインツール、スクリプトの開発環境を提供します。 - -
- -
- - {({ release }) => ( - <> - Node.js (LTS)をダウンロードする + + +
+

Run JavaScript Everywhere

+ + Node.js®は自由かつオープンソースでクロスプラットフォームに対応したJavaScript実行環境です。 + 開発者にサーバー、ウェブアプリ、コマンドラインツール、スクリプトの開発環境を提供します。 + +
+ +
+ + {({ release }) => ( + <> + Node.js (LTS)をダウンロードする + + 長期サポート版Node.js {release.versionWithPrefix} + 1をダウンロードする。 + パッケージマネージャーを利用したインストール方法もあります。 + + + )} + + + + {({ release }) => ( - 長期サポート版Node.js {release.versionWithPrefix} - 1をダウンロードする。 - パッケージマネージャーを利用したインストール方法もあります。 + 最新の機能をすぐに試したい場合は + 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/ko/index.mdx b/apps/site/pages/ko/index.mdx index 6e5d2141a6fcc..fe2b341d8ca08 100644 --- a/apps/site/pages/ko/index.mdx +++ b/apps/site/pages/ko/index.mdx @@ -4,134 +4,130 @@ layout: home ---
- - -
-

어디서든 JavaScript를 실행하세요!!

- -Node.js®는 무료, 오픈소스, 크로스플랫폼 JavaSript 런타임 환경으로 개발자 여러분이 서버, 웹 앱, 커맨드 작성 도구와 스크립트를 만들도록 해줍니다. - -
- -
- - {({ release }) => ( - <> - Node.js 다운로드 (LTS) + + +
+

어디서든 JavaScript를 실행하세요!!

+ + Node.js®는 무료, 오픈소스, 크로스플랫폼 JavaSript 런타임 환경으로 개발자 여러분이 서버, + 웹 앱, 커맨드 작성 도구와 스크립트를 만들도록 해줍니다. + +
+ +
+ + {({ 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. - -
- -
- - {({ release }) => ( - <> - Descarregar a Node.js (LTS) + + +
+

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. + +
+ +
+ + {({ 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. - -
- -
- - {({ release }) => ( - <> - Node.js'i İndir (LTS) + + +
+

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. + +
+ +
+ + {({ 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 із відкритим кодом, яке дозволяє розробникам створювати сервери, вебзастосунки, інструменти командного рядка та скрипти. - -
- -
- - {({ release }) => ( - <> - Завантажити Node.js (LTS) + + +
+

Запускайте 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 ---
- - -
-

在任何地方运行 JavaScript

- -Node.js® 是一个免费、开源、跨平台的 JavaScript 运行时环境,它让开发人员能够创建服务器、Web 应用、命令行工具和脚本。 - -
- -
- - {({ release }) => ( - <> - 下载 Node.js(LTS) - - 下载 Node.js {release.versionWithPrefix} - 1 长期支持版本。 - Node.js 也可以通过 软件包管理器 进行安装。 - - - )} - - - - {({ release }) => ( - - 想要更快获得新功能吗? - 获取 Node.js {release.versionWithPrefix} - 1 版本吧。 - - )} - -
+ + +
+

在任何地方运行 JavaScript

+ + Node.js® 是一个免费、开源、跨平台的 JavaScript 运行时环境, 它让开发人员能够创建服务器 + Web 应用、命令行工具和脚本。 + +
+ +
+ + {({ release }) => ( + <> + 下载 Node.js (LTS) + + 下载 Node.js {release.versionWithPrefix} + 1 长期支持版本。 + 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` -``` - -
- -通过我们的[学习资料](/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/zh-tw/index.mdx b/apps/site/pages/zh-tw/index.mdx index e310b30c2bdce..55e4e61891c25 100644 --- a/apps/site/pages/zh-tw/index.mdx +++ b/apps/site/pages/zh-tw/index.mdx @@ -4,134 +4,130 @@ layout: home ---
- - -
-

隨時隨地執行 JavaScript

- -Node.js® 是一款免費的跨平台開源 JavaScript 執行環境,供開發者建立伺服器、網頁應用程式、命令列工具與腳本。 - -
- -
- - {({ release }) => ( - <> - 下載 Node.js (LTS) + + +
+

隨時隨地執行 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` -``` - -
- -我們提供大量[學習資源](/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/tsconfig.json b/apps/site/tsconfig.json index 4596a8d4fc408..b9c7f4ce06c9a 100644 --- a/apps/site/tsconfig.json +++ b/apps/site/tsconfig.json @@ -18,9 +18,6 @@ "plugins": [{ "name": "next" }], "baseUrl": "." }, - "mdx": { - "checkMdx": true - }, "include": [ "next-env.d.ts", "**/*.mdx", From 03eac35ecc9720e8ca1f332a216a4e2aabc9ccf9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 23 Nov 2024 20:20:25 +1000 Subject: [PATCH 07/65] meta: bump @heroicons/react from 2.1.5 to 2.2.0 (#7265) Bumps [@heroicons/react](https://github.com/tailwindlabs/heroicons) from 2.1.5 to 2.2.0. - [Release notes](https://github.com/tailwindlabs/heroicons/releases) - [Changelog](https://github.com/tailwindlabs/heroicons/blob/master/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/heroicons/compare/v2.1.5...v2.2.0) --- updated-dependencies: - dependency-name: "@heroicons/react" 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 | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 9fd296093df5a..4b349ec71152e 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -36,7 +36,7 @@ "test": "turbo test:unit" }, "dependencies": { - "@heroicons/react": "~2.1.5", + "@heroicons/react": "~2.2.0", "@mdx-js/mdx": "^3.1.0", "@node-core/website-i18n": "*", "@node-core/ui-components": "*", diff --git a/package-lock.json b/package-lock.json index f55d907ee751e..55eecce577fd4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34,7 +34,7 @@ "name": "@node-core/website", "license": "MIT", "dependencies": { - "@heroicons/react": "~2.1.5", + "@heroicons/react": "~2.2.0", "@mdx-js/mdx": "^3.1.0", "@node-core/ui-components": "*", "@node-core/website-i18n": "*", @@ -1257,12 +1257,11 @@ } }, "node_modules/@heroicons/react": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.1.5.tgz", - "integrity": "sha512-FuzFN+BsHa+7OxbvAERtgBTNeZpUjgM/MIizfVkSCL2/edriN0Hx/DWRCR//aPYwO5QX/YlgLGXk+E3PcfZwjA==", - "license": "MIT", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.2.0.tgz", + "integrity": "sha512-LMcepvRaS9LYHJGsF0zzmgKCUim/X3N/DQKc4jepAXJ7l8QxJ1PmxJzqplF2Z3FE4PqBAIGyJAQ/w4B5dsqbtQ==", "peerDependencies": { - "react": ">= 16" + "react": ">= 16 || ^19.0.0-rc" } }, "node_modules/@humanfs/core": { From e27ef77fa28a1a3358af59a782abdc4f7ff43b67 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 23 Nov 2024 06:35:00 -0600 Subject: [PATCH 08/65] meta: bump prettier-plugin-tailwindcss from 0.6.8 to 0.6.9 in the tailwind group (#7261) meta: bump prettier-plugin-tailwindcss in the tailwind group Bumps the tailwind group with 1 update: [prettier-plugin-tailwindcss](https://github.com/tailwindlabs/prettier-plugin-tailwindcss). Updates `prettier-plugin-tailwindcss` from 0.6.8 to 0.6.9 - [Release notes](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/prettier-plugin-tailwindcss/compare/v0.6.8...v0.6.9) --- updated-dependencies: - dependency-name: prettier-plugin-tailwindcss dependency-type: direct:development update-type: version-update:semver-patch dependency-group: tailwind ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 9 ++++----- package.json | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 55eecce577fd4..e9dc53beb1002 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,7 @@ "eslint-plugin-import-x": "~4.4.2", "eslint-plugin-no-relative-import-paths": "~1.5.5", "prettier": "3.3.3", - "prettier-plugin-tailwindcss": "0.6.8" + "prettier-plugin-tailwindcss": "0.6.9" }, "engines": { "node": "v20" @@ -17760,11 +17760,10 @@ } }, "node_modules/prettier-plugin-tailwindcss": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.8.tgz", - "integrity": "sha512-dGu3kdm7SXPkiW4nzeWKCl3uoImdd5CTZEJGxyypEPL37Wj0HT2pLqjrvSei1nTeuQfO4PUfjeW5cTUNRLZ4sA==", + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.9.tgz", + "integrity": "sha512-r0i3uhaZAXYP0At5xGfJH876W3HHGHDp+LCRUJrs57PBeQ6mYHMwr25KH8NPX44F2yGTvdnH7OqCshlQx183Eg==", "dev": true, - "license": "MIT", "engines": { "node": ">=14.21.3" }, diff --git a/package.json b/package.json index e9a93850899ea..81c7d81fb7fc3 100644 --- a/package.json +++ b/package.json @@ -48,6 +48,6 @@ "eslint-plugin-import-x": "~4.4.2", "eslint-plugin-no-relative-import-paths": "~1.5.5", "prettier": "3.3.3", - "prettier-plugin-tailwindcss": "0.6.8" + "prettier-plugin-tailwindcss": "0.6.9" } } From 35848bac0f0af400b3ee20ae1137c724aaac69d3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 23 Nov 2024 07:01:28 -0600 Subject: [PATCH 09/65] meta: bump husky from 9.1.6 to 9.1.7 (#7264) Bumps [husky](https://github.com/typicode/husky) from 9.1.6 to 9.1.7. - [Release notes](https://github.com/typicode/husky/releases) - [Commits](https://github.com/typicode/husky/compare/v9.1.6...v9.1.7) --- updated-dependencies: - dependency-name: husky 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 | 9 ++++----- package.json | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index e9dc53beb1002..c48c93e6e8f19 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "packages/*" ], "dependencies": { - "husky": "9.1.6", + "husky": "9.1.7", "lint-staged": "15.2.10", "turbo": "2.3.0" }, @@ -11456,10 +11456,9 @@ } }, "node_modules/husky": { - "version": "9.1.6", - "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.6.tgz", - "integrity": "sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==", - "license": "MIT", + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", + "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", "bin": { "husky": "bin.js" }, diff --git a/package.json b/package.json index 81c7d81fb7fc3..ad81fd56c6c05 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "prepare": "husky" }, "dependencies": { - "husky": "9.1.6", + "husky": "9.1.7", "lint-staged": "15.2.10", "turbo": "2.3.0" }, From 792ffbd20ebf03b384a9ece1619dd68b7d8a2d15 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 23 Nov 2024 07:01:50 -0600 Subject: [PATCH 10/65] meta: bump @vercel/analytics from 1.4.0 to 1.4.1 in the next-js group (#7260) Bumps the next-js group with 1 update: [@vercel/analytics](https://github.com/vercel/analytics/tree/HEAD/packages/web). Updates `@vercel/analytics` from 1.4.0 to 1.4.1 - [Release notes](https://github.com/vercel/analytics/releases) - [Commits](https://github.com/vercel/analytics/commits/1.4.1/packages/web) --- updated-dependencies: - dependency-name: "@vercel/analytics" 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 | 9 ++++----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 4b349ec71152e..d01ee283315a9 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -58,7 +58,7 @@ "@tailwindcss/container-queries": "~0.1.1", "@types/node": "20.16.5", "@vcarl/remark-headings": "~0.1.0", - "@vercel/analytics": "~1.4.0", + "@vercel/analytics": "~1.4.1", "@vercel/otel": "~1.10.0", "@vercel/speed-insights": "~1.1.0", "autoprefixer": "~10.4.20", diff --git a/package-lock.json b/package-lock.json index c48c93e6e8f19..6cd6e8ce80295 100644 --- a/package-lock.json +++ b/package-lock.json @@ -56,7 +56,7 @@ "@tailwindcss/container-queries": "~0.1.1", "@types/node": "20.16.5", "@vcarl/remark-headings": "~0.1.0", - "@vercel/analytics": "~1.4.0", + "@vercel/analytics": "~1.4.1", "@vercel/otel": "~1.10.0", "@vercel/speed-insights": "~1.1.0", "autoprefixer": "~10.4.20", @@ -5377,10 +5377,9 @@ } }, "node_modules/@vercel/analytics": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-1.4.0.tgz", - "integrity": "sha512-eUwWW7l8nPJb0nJmjZuYp9o7YZ9XPj67lU9mEogaPXiFxq/SFB5DMnvQVk4aKcL8kFgotiYdDZWxdiNcWo7cgg==", - "license": "MPL-2.0", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-1.4.1.tgz", + "integrity": "sha512-ekpL4ReX2TH3LnrRZTUKjHHNpNy9S1I7QmS+g/RQXoSUQ8ienzosuX7T9djZ/s8zPhBx1mpHP/Rw5875N+zQIQ==", "peerDependencies": { "@remix-run/react": "^2", "@sveltejs/kit": "^1 || ^2", From dc2a7fa6fff499a82b6501752369bac85d3cf398 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 23 Nov 2024 13:25:40 +0000 Subject: [PATCH 11/65] meta: bump the lint group with 4 updates (#7256) Bumps the lint group with 4 updates: [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js), [eslint](https://github.com/eslint/eslint), [eslint-plugin-import-x](https://github.com/un-ts/eslint-plugin-import-x) and [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint). Updates `@eslint/js` from 9.14.0 to 9.15.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.15.0/packages/js) Updates `eslint` from 9.14.0 to 9.15.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.14.0...v9.15.0) Updates `eslint-plugin-import-x` from 4.4.2 to 4.4.3 - [Release notes](https://github.com/un-ts/eslint-plugin-import-x/releases) - [Changelog](https://github.com/un-ts/eslint-plugin-import-x/blob/master/CHANGELOG.md) - [Commits](https://github.com/un-ts/eslint-plugin-import-x/compare/v4.4.2...v4.4.3) Updates `typescript-eslint` from 8.14.0 to 8.15.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.15.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: eslint-plugin-import-x dependency-type: direct:development update-type: version-update:semver-patch 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 | 2 +- package-lock.json | 72 ++++++++++++++++---------------------- package.json | 6 ++-- packages/i18n/package.json | 2 +- 4 files changed, 35 insertions(+), 47 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index d01ee283315a9..9aaeb7eaa0576 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -127,7 +127,7 @@ "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", "typescript": "~5.6.3", - "typescript-eslint": "~8.14.0", + "typescript-eslint": "~8.15.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 6cd6e8ce80295..87d7f89e5b5f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,12 +16,12 @@ "turbo": "2.3.0" }, "devDependencies": { - "@eslint/js": "~9.14.0", + "@eslint/js": "~9.15.0", "@types/eslint__js": "8.42.3", "commitizen": "4.3.1", "cz-conventional-changelog": "3.3.0", - "eslint": "~9.14.0", - "eslint-plugin-import-x": "~4.4.2", + "eslint": "~9.15.0", + "eslint-plugin-import-x": "~4.4.3", "eslint-plugin-no-relative-import-paths": "~1.5.5", "prettier": "3.3.3", "prettier-plugin-tailwindcss": "0.6.9" @@ -125,7 +125,7 @@ "stylelint-order": "6.0.4", "stylelint-selector-bem-pattern": "4.0.1", "typescript": "~5.6.3", - "typescript-eslint": "~8.14.0", + "typescript-eslint": "~8.15.0", "user-agent-data-types": "0.4.2" }, "engines": { @@ -988,11 +988,10 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", - "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.0.tgz", + "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@eslint/object-schema": "^2.1.4", "debug": "^4.3.1", @@ -1034,11 +1033,10 @@ } }, "node_modules/@eslint/core": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", - "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz", + "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -1136,11 +1134,10 @@ } }, "node_modules/@eslint/js": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.14.0.tgz", - "integrity": "sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.15.0.tgz", + "integrity": "sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==", "dev": true, - "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -1150,7 +1147,6 @@ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", "dev": true, - "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -5002,7 +4998,6 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.1.tgz", "integrity": "sha512-xfvdgA8AP/vxHgtgU310+WBnLB4uJQ9XdyP17RebG26rLtDrQJV3ZYrcopX91GrHmMoH8bdSwMRh2a//TiJ1jQ==", "dev": true, - "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.8.1", @@ -5059,7 +5054,6 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.8.1.tgz", "integrity": "sha512-hQUVn2Lij2NAxVFEdvIGxT9gP1tq2yM83m+by3whWFsWC+1y8pxxxHUFE1UqDu2VsGi2i6RLcv4QvouM84U+ow==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "8.8.1", "@typescript-eslint/types": "8.8.1", @@ -5088,7 +5082,6 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.8.1.tgz", "integrity": "sha512-X4JdU+66Mazev/J0gfXlcC/dV6JI37h+93W9BRYXrSn0hrE64IoWgVkO9MSJgEzoWkxONgaQpICWg8vAN74wlA==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/types": "8.8.1", "@typescript-eslint/visitor-keys": "8.8.1" @@ -5106,7 +5099,6 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.8.1.tgz", "integrity": "sha512-qSVnpcbLP8CALORf0za+vjLYj1Wp8HSoiI8zYU5tHxRVj30702Z1Yw4cLwfNKhTPWp5+P+k1pjmD5Zd1nhxiZA==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/typescript-estree": "8.8.1", "@typescript-eslint/utils": "8.8.1", @@ -5120,6 +5112,9 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, "peerDependenciesMeta": { "typescript": { "optional": true @@ -5154,7 +5149,6 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.1.tgz", "integrity": "sha512-WCcTP4SDXzMd23N27u66zTKMuEevH4uzU8C9jf0RO4E04yVHgQgW+r+TeVTNnO1KIfrL8ebgVVYYMMO3+jC55Q==", "dev": true, - "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -5168,7 +5162,6 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.1.tgz", "integrity": "sha512-A5d1R9p+X+1js4JogdNilDuuq+EHZdsH9MjTVxXOdVFfTJXunKJR/v+fNNyO4TnoOn5HqobzfRlc70NC6HTcdg==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "8.8.1", "@typescript-eslint/visitor-keys": "8.8.1", @@ -5197,7 +5190,6 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.14.0.tgz", "integrity": "sha512-OGqj6uB8THhrHj0Fk27DcHPojW7zKwKkPmHXHvQ58pLYp4hy8CSUdTKykKeh+5vFqTTVmjz0zCOOPKRovdsgHA==", "dev": true, - "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@typescript-eslint/scope-manager": "8.14.0", @@ -5281,10 +5273,9 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.14.0.tgz", "integrity": "sha512-vG0XZo8AdTH9OE6VFRwAZldNc7qtJ/6NLGWak+BtENuEUXGZgFpihILPiBvKXvJ2nFu27XNGC6rKiwuaoMbYzQ==", "dev": true, - "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.14.0", - "eslint-visitor-keys": "^3.4.3" + "@typescript-eslint/types": "8.15.0", + "eslint-visitor-keys": "^4.2.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -8711,27 +8702,26 @@ } }, "node_modules/eslint": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.14.0.tgz", - "integrity": "sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.15.0.tgz", + "integrity": "sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==", "dev": true, - "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.18.0", - "@eslint/core": "^0.7.0", - "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.14.0", - "@eslint/plugin-kit": "^0.2.0", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.9.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.15.0", + "@eslint/plugin-kit": "^0.2.3", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.0", + "@humanwhocodes/retry": "^0.4.1", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.5", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.2.0", @@ -8750,8 +8740,7 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" @@ -8975,7 +8964,6 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.4.3.tgz", "integrity": "sha512-QBprHvhLsfDhP++2T1NnjsOUt6bLDX3NMHaYwAB1FD3xmYTkdFH+HS1OamGhz28jLkRyIZa6UNAzTxbHnJwz5w==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/utils": "^8.1.0", "debug": "^4.3.4", @@ -23727,4 +23715,4 @@ } } } -} +} \ No newline at end of file diff --git a/package.json b/package.json index ad81fd56c6c05..88a1f3db969ce 100644 --- a/package.json +++ b/package.json @@ -40,12 +40,12 @@ "turbo": "2.3.0" }, "devDependencies": { - "@eslint/js": "~9.14.0", + "@eslint/js": "~9.15.0", "@types/eslint__js": "8.42.3", "commitizen": "4.3.1", "cz-conventional-changelog": "3.3.0", - "eslint": "~9.14.0", - "eslint-plugin-import-x": "~4.4.2", + "eslint": "~9.15.0", + "eslint-plugin-import-x": "~4.4.3", "eslint-plugin-no-relative-import-paths": "~1.5.5", "prettier": "3.3.3", "prettier-plugin-tailwindcss": "0.6.9" diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 9dad2e855ffab..4622584d40be0 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -21,6 +21,6 @@ "devDependencies": { "eslint-import-resolver-typescript": "~3.6.3", "typescript": "~5.6.3", - "typescript-eslint": "~8.14.0" + "typescript-eslint": "~8.15.0" } } From f5b35d1f586ca27181cf4d363331cc65e9764d2d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 23 Nov 2024 07:38:32 -0600 Subject: [PATCH 12/65] meta: bump @radix-ui/react-tooltip from 1.1.3 to 1.1.4 (#7263) Bumps [@radix-ui/react-tooltip](https://github.com/radix-ui/primitives) from 1.1.3 to 1.1.4. - [Changelog](https://github.com/radix-ui/primitives/blob/main/release-process.md) - [Commits](https://github.com/radix-ui/primitives/commits) --- updated-dependencies: - dependency-name: "@radix-ui/react-tooltip" 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> --- apps/site/package.json | 2 +- package-lock.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 9aaeb7eaa0576..8ee52defe3b98 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -53,7 +53,7 @@ "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-tabs": "^1.1.1", "@radix-ui/react-toast": "^1.2.2", - "@radix-ui/react-tooltip": "^1.1.3", + "@radix-ui/react-tooltip": "^1.1.4", "@savvywombat/tailwindcss-grid-areas": "~4.0.0", "@tailwindcss/container-queries": "~0.1.1", "@types/node": "20.16.5", diff --git a/package-lock.json b/package-lock.json index 87d7f89e5b5f5..44f5ebdec63d4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -51,7 +51,7 @@ "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-tabs": "^1.1.1", "@radix-ui/react-toast": "^1.2.2", - "@radix-ui/react-tooltip": "^1.1.3", + "@radix-ui/react-tooltip": "^1.1.4", "@savvywombat/tailwindcss-grid-areas": "~4.0.0", "@tailwindcss/container-queries": "~0.1.1", "@types/node": "20.16.5", From 1183b5c552b10ba1d3f152132c080cae3d5a23d9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 23 Nov 2024 07:39:38 -0600 Subject: [PATCH 13/65] meta: bump the storybook group with 6 updates (#7259) 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.4` | `8.4.5` | | [@storybook/addon-interactions](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/interactions) | `8.4.4` | `8.4.5` | | [@storybook/addon-themes](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/themes) | `8.4.4` | `8.4.5` | | [@storybook/addon-viewport](https://github.com/storybookjs/storybook/tree/HEAD/code/addons/viewport) | `8.4.4` | `8.4.5` | | [@storybook/react-webpack5](https://github.com/storybookjs/storybook/tree/HEAD/code/frameworks/react-webpack5) | `8.4.4` | `8.4.5` | | [storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/lib/cli) | `8.4.4` | `8.4.5` | Updates `@storybook/addon-controls` from 8.4.4 to 8.4.5 - [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.5/code/addons/controls) Updates `@storybook/addon-interactions` from 8.4.4 to 8.4.5 - [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.5/code/addons/interactions) Updates `@storybook/addon-themes` from 8.4.4 to 8.4.5 - [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.5/code/addons/themes) Updates `@storybook/addon-viewport` from 8.4.4 to 8.4.5 - [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.5/code/addons/viewport) Updates `@storybook/react-webpack5` from 8.4.4 to 8.4.5 - [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.5/code/frameworks/react-webpack5) Updates `storybook` from 8.4.4 to 8.4.5 - [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.5/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] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/site/package.json | 10 +- package-lock.json | 446 +++++++++++++++++++++-------------------- 2 files changed, 236 insertions(+), 220 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 8ee52defe3b98..b984c3f51e48b 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -95,13 +95,13 @@ "devDependencies": { "@eslint/compat": "~1.2.3", "@next/eslint-plugin-next": "15.0.3", - "@storybook/addon-controls": "^8.4.4", - "@storybook/addon-interactions": "^8.4.4", + "@storybook/addon-controls": "^8.4.5", + "@storybook/addon-interactions": "^8.4.5", "@storybook/addon-styling-webpack": "^1.0.1", - "@storybook/addon-themes": "^8.4.4", - "@storybook/addon-viewport": "^8.4.4", + "@storybook/addon-themes": "^8.4.5", + "@storybook/addon-viewport": "^8.4.5", "@storybook/addon-webpack5-compiler-swc": "^1.0.5", - "@storybook/react-webpack5": "^8.4.4", + "@storybook/react-webpack5": "^8.4.5", "@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 44f5ebdec63d4..ec8832da84904 100644 --- a/package-lock.json +++ b/package-lock.json @@ -93,13 +93,13 @@ "devDependencies": { "@eslint/compat": "~1.2.3", "@next/eslint-plugin-next": "15.0.3", - "@storybook/addon-controls": "^8.4.4", - "@storybook/addon-interactions": "^8.4.4", + "@storybook/addon-controls": "^8.4.5", + "@storybook/addon-interactions": "^8.4.5", "@storybook/addon-styling-webpack": "^1.0.1", - "@storybook/addon-themes": "^8.4.4", - "@storybook/addon-viewport": "^8.4.4", + "@storybook/addon-themes": "^8.4.5", + "@storybook/addon-viewport": "^8.4.5", "@storybook/addon-webpack5-compiler-swc": "^1.0.5", - "@storybook/react-webpack5": "^8.4.4", + "@storybook/react-webpack5": "^8.4.5", "@testing-library/jest-dom": "~6.6.3", "@testing-library/react": "~16.0.1", "@testing-library/user-event": "~14.5.2", @@ -931,7 +931,6 @@ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" @@ -3853,11 +3852,10 @@ } }, "node_modules/@storybook/addon-controls": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.4.4.tgz", - "integrity": "sha512-FbZRbwJQggLz6M3zB6scCp1SDGwQ5zdiD6sjBilZzgGO5rBFqG0A8PoOyr4iPrLU2y/NZBdRrJBD+6MkaJ+yzw==", + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.4.5.tgz", + "integrity": "sha512-RVTtDDuESLYc1+SJQv2kI7wzBddzAS9uoEe8P75quN6S4pC0GxAB6xirWZ2+WOcba4eHosY+PxMwuBXQfH78Ew==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", "dequal": "^2.0.2", @@ -3868,19 +3866,18 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.4" + "storybook": "^8.4.5" } }, "node_modules/@storybook/addon-interactions": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.4.4.tgz", - "integrity": "sha512-izqcc6tY0BiKW7DYrEnoXUEH9FYDPWNfQnqqE0nVBv3BS2DoNmm8M9SB8fZx7pPfw53cMJBGt3vrlY0Wtxy1+Q==", + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.4.5.tgz", + "integrity": "sha512-s6R8XVD8LTp+LQTDbhtDjDLE6S44I7FtMLxPdMNwN9VEJjBk01NONLDuGDpNq5o/0bnybA3rMHk9+3afsgzidQ==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.4.4", - "@storybook/test": "8.4.4", + "@storybook/instrumenter": "8.4.5", + "@storybook/test": "8.4.5", "polished": "^4.2.2", "ts-dedent": "^2.2.0" }, @@ -3889,7 +3886,140 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.4" + "storybook": "^8.4.5" + } + }, + "node_modules/@storybook/addon-interactions/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, + "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/addon-interactions/node_modules/@storybook/test": { + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.4.5.tgz", + "integrity": "sha512-mHsRc6m60nfcEBsjvUkKz+Jnz0or4WH5jmJ1VL2pGKO4VzESCPqAwDnwDqP2YyeSQ0b/MAKUT5kdoLE2RE2eVw==", + "dev": true, + "dependencies": { + "@storybook/csf": "^0.1.11", + "@storybook/global": "^5.0.0", + "@storybook/instrumenter": "8.4.5", + "@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.5" + } + }, + "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, + "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/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=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, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/addon-interactions/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@storybook/addon-interactions/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "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 + }, + "node_modules/@storybook/addon-interactions/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@storybook/addon-interactions/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/@storybook/addon-styling-webpack": { @@ -3906,11 +4036,10 @@ } }, "node_modules/@storybook/addon-themes": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.4.4.tgz", - "integrity": "sha512-RHyGQqBsnMrVtTJZtYhm2P33Bmp0d8z22/22Uxp5ux9irhp3s3TYRB5Q1CdyfulgM7JaN2l5GfXHUaytb2UiPA==", + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.4.5.tgz", + "integrity": "sha512-4ZheodvdAjAXbzx3HLmPxin5ULh1lPp7QH8Yi8SijRcreUYFiKvPfaTvR0pEcaFppwPXu1gVQlud5GLMTLEQgQ==", "dev": true, - "license": "MIT", "dependencies": { "ts-dedent": "^2.0.0" }, @@ -3919,15 +4048,14 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.4" + "storybook": "^8.4.5" } }, "node_modules/@storybook/addon-viewport": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.4.4.tgz", - "integrity": "sha512-SRHJlLhf3tu7+sYNfVIYTeMegn6aiv4HGX97ZLvL76NWWBU8BntQ1LKMki7475mWiZNUFMoYYPsHlG+HU9FAtg==", + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.4.5.tgz", + "integrity": "sha512-l7Y41gIbJAsIN/QCg1QJ9sr61FLz1C/imUotcDej41tOHxUTSQOlXpNtVnfhUM1vGQc0yNpP3pVxj8BpXi0cAw==", "dev": true, - "license": "MIT", "dependencies": { "memoizerific": "^1.11.3" }, @@ -3936,7 +4064,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.4" + "storybook": "^8.4.5" } }, "node_modules/@storybook/addon-webpack5-compiler-swc": { @@ -3954,13 +4082,12 @@ } }, "node_modules/@storybook/builder-webpack5": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.4.4.tgz", - "integrity": "sha512-I7SmGngtGc/WA44UkG3sCyYtGXVjTpPe42umf70n5EVaHRvtmXCxfL41C1y3CIfEMAfF36gOFm7rEJROIO5NyA==", + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.4.5.tgz", + "integrity": "sha512-5TSpirK2LIL4Wultpowlkrv3iAje57HTw92Hy6c4Zn64tAs30123mkdE6MoJcXMBfD4JwX9I2K2Q+ofZXblJPg==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.4.4", + "@storybook/core-webpack": "8.4.5", "@types/node": "^22.0.0", "@types/semver": "^7.3.4", "browser-assert": "^1.2.1", @@ -3991,7 +4118,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.4" + "storybook": "^8.4.5" }, "peerDependenciesMeta": { "typescript": { @@ -4000,11 +4127,10 @@ } }, "node_modules/@storybook/components": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.4.4.tgz", - "integrity": "sha512-0BSZVmsk23C0BSRKx3liZSVQFXtoF86XQFdNQxjrXIwdHIEN7TcL3DwcxeVUU5ilGp7HeDgAydGNIPGgTeEe6g==", + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.4.5.tgz", + "integrity": "sha512-2PdnKfqNNv3sO7qILgWXiNvmLOi503oN9OMemNCQjTIvdvySc5JpS9/eClwcl/JfmE4qHdSHZr8dLLkBM9S7+Q==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -4014,11 +4140,10 @@ } }, "node_modules/@storybook/core": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.4.4.tgz", - "integrity": "sha512-WjTmJpsHsFCd7tQ/8jFpDWjhntauXcWYYTcEZk56Pq4miyNrrXhV0S80Gxv3Uvzk0jocgtT2AKf8rQuH2UkQEg==", + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.4.5.tgz", + "integrity": "sha512-aB1sQNX5nRoUAqg5u1py0MuR/VPd6c6PhECa4rW6pmr7kZcfyP4PP6UFpXuN71ypTQlkRE3Vc5PQZ3gLhE9o3g==", "dev": true, - "license": "MIT", "dependencies": { "@storybook/csf": "^0.1.11", "better-opn": "^3.0.2", @@ -4046,11 +4171,10 @@ } }, "node_modules/@storybook/core-webpack": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.4.4.tgz", - "integrity": "sha512-JeODT64uRJDH0o/ZOAAZHJswBkTYd2u9AdGyAzjp16KRK2NcHM2iUMNT94lOlCYzshvRVqPFVxbNmaL16/K0Ag==", + "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==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "^22.0.0", "ts-dedent": "^2.0.0" @@ -4060,7 +4184,7 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "storybook": "^8.4.4" + "storybook": "^8.4.5" } }, "node_modules/@storybook/csf": { @@ -4093,30 +4217,11 @@ "dev": true, "license": "MIT" }, - "node_modules/@storybook/instrumenter": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.4.4.tgz", - "integrity": "sha512-mq/YVEZrB8jyyio2Of01rQixsQ72z8ssAhJS9ldIlK+cvERQi0VBCpH3pejPmjOB40yiKBJHNqH4HIANVhibgw==", - "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.4" - } - }, "node_modules/@storybook/manager-api": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.4.4.tgz", - "integrity": "sha512-rmNPcbEyzakEHoaecUbhkW7WWOkyZ0z7ywH4d5/s0ZuQS57Px2N+ZLVgRJwYK+YNHiJYqDf1BTln9YJ/Mt1L6Q==", + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.4.5.tgz", + "integrity": "sha512-t39JaMy3UX4StbUH/tIDcaflBDxTcyIq853wQtBMhVL3e1+Dw3MIiiG/5bw79HU4R7kSmPVLXIIbV3FmXkq7KQ==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -4140,14 +4245,13 @@ } }, "node_modules/@storybook/preset-react-webpack": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.4.4.tgz", - "integrity": "sha512-sCuTZ/zbEWfTYy2cyDUHVDLIEKYFmFPhGDbQLk1D4MEXZsVQqBx7H0yaG9GqB7swvED+XIgQeZTeUA/lTq41fg==", + "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==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/core-webpack": "8.4.4", - "@storybook/react": "8.4.4", + "@storybook/core-webpack": "8.4.5", + "@storybook/react": "8.4.5", "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", "@types/node": "^22.0.0", "@types/semver": "^7.3.4", @@ -4169,7 +4273,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.4" + "storybook": "^8.4.5" }, "peerDependenciesMeta": { "typescript": { @@ -4178,11 +4282,10 @@ } }, "node_modules/@storybook/preview-api": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.4.4.tgz", - "integrity": "sha512-iZrWQcjRBqBHFdDXVxGpw6mHBZMCMYqhWXdyJ0d1S2y3PwcfOjkcXlQ1UiAenFHlA6dKrcYw8luKUQTL9bKReA==", + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.4.5.tgz", + "integrity": "sha512-MKIZ2jQO/3cUdsT57eq8jRgB6inALo9BxrQ88f7mqzltOkMvADvTAY6y8JZqTUoDzWTH/ny/8SGGdtpqlxRuiQ==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -4192,18 +4295,17 @@ } }, "node_modules/@storybook/react": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.4.4.tgz", - "integrity": "sha512-92lGnRcAI2qW6zH8GMBScyXmOS1ANI8ZuSP4ExQj+lGsCrAr7PBr0wuHy3wIn1YyAvQGPUn/mpYrmMz08c2HfA==", + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.4.5.tgz", + "integrity": "sha512-2+p4aGEdGOnu2XNhnMi1B8GPeszm34P905HgqGD1cuz9gMt7x/bgZQaVxs6kpHZ3Hb6V9qp62La2dbAYatHdSw==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/components": "8.4.4", + "@storybook/components": "8.4.5", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "8.4.4", - "@storybook/preview-api": "8.4.4", - "@storybook/react-dom-shim": "8.4.4", - "@storybook/theming": "8.4.4" + "@storybook/manager-api": "8.4.5", + "@storybook/preview-api": "8.4.5", + "@storybook/react-dom-shim": "8.4.5", + "@storybook/theming": "8.4.5" }, "engines": { "node": ">=18.0.0" @@ -4213,10 +4315,10 @@ "url": "https://opencollective.com/storybook" }, "peerDependencies": { - "@storybook/test": "8.4.4", + "@storybook/test": "8.4.5", "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.4", + "storybook": "^8.4.5", "typescript": ">= 4.2.x" }, "peerDependenciesMeta": { @@ -4233,7 +4335,6 @@ "resolved": "https://registry.npmjs.org/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.6--canary.9.0c3f3b7.0.tgz", "integrity": "sha512-KUqXC3oa9JuQ0kZJLBhVdS4lOneKTOopnNBK4tUAgoxWQ3u/IjzdueZjFr7gyBrXMoU6duutk3RQR9u8ZpYJ4Q==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^4.1.1", "endent": "^2.0.1", @@ -4249,11 +4350,10 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.4.4.tgz", - "integrity": "sha512-kufv2FDK3kjADBo+/aKHsUn9T5E4p9IBAmCoIvXBGRDumPRds7Pt3MB4ODKlg+IumR7LMEq0jTJkn27ZRTuUmw==", + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.4.5.tgz", + "integrity": "sha512-YTWTfPagptEYXJsnxAl3zP97Ev0zebtaEV0WgjGaEeumr+zsfgKKwzzHxgrtumBmDzwkuKlzFwlQB5A8keOIGA==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -4261,19 +4361,18 @@ "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.4" + "storybook": "^8.4.5" } }, "node_modules/@storybook/react-webpack5": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.4.4.tgz", - "integrity": "sha512-58dxE92h/JZO3xKl88BbEJ165UVCazX9oWd5si+V2GoeqKilVsVM9EMLv5sZY+9blv+lxrZdkykHDeIrcXVxOg==", + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.4.5.tgz", + "integrity": "sha512-tmYO68I4c0mn2XwM4/WkzEVdP27umfa+Sce+NHkk6fGlp25BiKw70uE8sOkM1leB0wn4ktn9eBw46xXdJv2oew==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/builder-webpack5": "8.4.4", - "@storybook/preset-react-webpack": "8.4.4", - "@storybook/react": "8.4.4", + "@storybook/builder-webpack5": "8.4.5", + "@storybook/preset-react-webpack": "8.4.5", + "@storybook/react": "8.4.5", "@types/node": "^22.0.0" }, "engines": { @@ -4286,7 +4385,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.4", + "storybook": "^8.4.5", "typescript": ">= 4.2.x" }, "peerDependenciesMeta": { @@ -4348,11 +4447,10 @@ "license": "MIT" }, "node_modules/@storybook/theming": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.4.4.tgz", - "integrity": "sha512-iq4yt3Fx35ZV5owNC//E6G+QPV19xHHVN2Ugi3p7KOSFK3chuXX9mxZ1rfir+t+U30a5EPOEnlsY3/1LXn7aTw==", + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.4.5.tgz", + "integrity": "sha512-45e/jeG4iuqdZcHg3PbB6dwXQTwlnnEB7r/QcVExyC7ibrkTnjUfvxzyUw4mmU3CXETFGD5EcUobFkgK+/aPxQ==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -4671,8 +4769,7 @@ "version": "0.0.9", "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.9.tgz", "integrity": "sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/eslint": { "version": "9.6.1", @@ -4744,8 +4841,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/is-empty": { "version": "1.2.3", @@ -4897,8 +4993,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/prop-types": { "version": "15.7.13", @@ -4932,8 +5027,7 @@ "version": "1.20.6", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.6.tgz", "integrity": "sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/@types/semver": { "version": "7.5.8", @@ -5962,7 +6056,6 @@ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, - "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -5980,7 +6073,6 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -6012,7 +6104,6 @@ "engines": [ "node >= 0.8.0" ], - "license": "Apache-2.0", "bin": { "ansi-html": "bin/ansi-html" } @@ -6289,7 +6380,6 @@ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", "dev": true, - "license": "MIT", "dependencies": { "tslib": "^2.0.1" }, @@ -6598,7 +6688,6 @@ "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", "dev": true, - "license": "MIT", "dependencies": { "open": "^8.0.4" }, @@ -6674,8 +6763,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/brace-expansion": { "version": "2.0.1", @@ -6814,7 +6902,6 @@ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dev": true, - "license": "MIT", "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" @@ -6864,7 +6951,6 @@ "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -7056,7 +7142,6 @@ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "dev": true, - "license": "MIT", "dependencies": { "source-map": "~0.6.0" }, @@ -7069,7 +7154,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -7404,8 +7488,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/concat-map": { "version": "0.0.1", @@ -7449,8 +7532,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/conventional-commit-types": { "version": "3.0.0", @@ -7597,7 +7679,6 @@ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", "dev": true, - "license": "MIT", "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.33", @@ -7650,7 +7731,6 @@ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">= 6" }, @@ -7999,7 +8079,6 @@ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -8169,7 +8248,6 @@ "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", "dev": true, - "license": "MIT", "dependencies": { "utila": "~0.4" } @@ -8209,8 +8287,7 @@ "type": "github", "url": "https://github.com/sponsors/fb55" } - ], - "license": "BSD-2-Clause" + ] }, "node_modules/domexception": { "version": "4.0.0", @@ -8262,7 +8339,6 @@ "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dev": true, - "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -8310,7 +8386,6 @@ "resolved": "https://registry.npmjs.org/endent/-/endent-2.1.0.tgz", "integrity": "sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==", "dev": true, - "license": "MIT", "dependencies": { "dedent": "^0.7.0", "fast-json-parse": "^1.0.3", @@ -8599,7 +8674,6 @@ "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", "dev": true, "hasInstallScript": true, - "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -8638,7 +8712,6 @@ "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^4.3.4" }, @@ -10010,8 +10083,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz", "integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", @@ -10173,7 +10245,6 @@ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, - "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", @@ -10290,7 +10361,6 @@ "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz", "integrity": "sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.16.7", "chalk": "^4.1.2", @@ -10319,7 +10389,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -10364,7 +10433,6 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -10381,7 +10449,6 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, - "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -10398,7 +10465,6 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -10433,7 +10499,6 @@ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -10452,7 +10517,6 @@ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, - "license": "ISC", "engines": { "node": ">= 6" } @@ -10532,8 +10596,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", - "dev": true, - "license": "Unlicense" + "dev": true }, "node_modules/fs.realpath": { "version": "1.0.0", @@ -11211,7 +11274,6 @@ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, - "license": "MIT", "bin": { "he": "bin/he" } @@ -11276,8 +11338,7 @@ "type": "patreon", "url": "https://patreon.com/mdevils" } - ], - "license": "MIT" + ] }, "node_modules/html-escaper": { "version": "2.0.2", @@ -11291,7 +11352,6 @@ "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", "dev": true, - "license": "MIT", "dependencies": { "camel-case": "^4.1.2", "clean-css": "^5.2.2", @@ -11336,7 +11396,6 @@ "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.3.tgz", "integrity": "sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==", "dev": true, - "license": "MIT", "dependencies": { "@types/html-minifier-terser": "^6.0.0", "html-minifier-terser": "^6.0.2", @@ -11474,7 +11533,6 @@ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, - "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -11962,7 +12020,6 @@ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, - "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -12346,7 +12403,6 @@ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, - "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, @@ -13850,7 +13906,6 @@ "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz", "integrity": "sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==", "dev": true, - "license": "MIT", "engines": { "node": ">=12.0.0" } @@ -14653,7 +14708,6 @@ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "dev": true, - "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -14701,7 +14755,6 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, - "license": "MIT", "dependencies": { "semver": "^6.0.0" }, @@ -14717,7 +14770,6 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -15199,7 +15251,6 @@ "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "dev": true, - "license": "Unlicense", "dependencies": { "fs-monkey": "^1.0.4" }, @@ -16383,7 +16434,6 @@ "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "dev": true, - "license": "MIT", "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -16393,8 +16443,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/node-domexception": { "version": "1.0.0", @@ -16592,7 +16641,6 @@ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" }, @@ -16738,8 +16786,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.5.tgz", "integrity": "sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==", - "dev": true, - "license": "ISC" + "dev": true }, "node_modules/once": { "version": "1.4.0", @@ -16783,7 +16830,6 @@ "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, - "license": "MIT", "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -16972,7 +17018,6 @@ "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", "dev": true, - "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -17062,7 +17107,6 @@ "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", "dev": true, - "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -17072,8 +17116,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/path-exists": { "version": "4.0.0", @@ -17529,7 +17572,6 @@ "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", "dev": true, - "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -17542,7 +17584,6 @@ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.1.0.tgz", "integrity": "sha512-rm0bdSv4jC3BDma3s9H19ZddW0aHX6EoqwDYU2IfZhRN+53QrufTRo2IdkAbRqLx4R2IYbZnbjKKxg4VN5oU9Q==", "dev": true, - "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^7.0.0", @@ -17560,7 +17601,6 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", "dev": true, - "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -17574,7 +17614,6 @@ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", "dev": true, - "license": "ISC", "dependencies": { "postcss-selector-parser": "^7.0.0" }, @@ -17590,7 +17629,6 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", "dev": true, - "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -17604,7 +17642,6 @@ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, - "license": "ISC", "dependencies": { "icss-utils": "^5.0.0" }, @@ -17828,7 +17865,6 @@ "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", "dev": true, - "license": "MIT", "dependencies": { "lodash": "^4.17.20", "renderkid": "^3.0.0" @@ -17984,11 +18020,10 @@ "license": "MIT" }, "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz", + "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.6" }, @@ -18052,7 +18087,6 @@ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } @@ -18074,7 +18108,6 @@ "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.1.0.tgz", "integrity": "sha512-APPU8HB2uZnpl6Vt/+0AFoVYgSRtfiP6FLrZgPPTDmqSb2R4qZRbgd0A3VzIFxDt5e+Fozjx79WjLWnF69DK8g==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.18.9", "@babel/traverse": "^7.18.9", @@ -18096,7 +18129,6 @@ "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz", "integrity": "sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==", "dev": true, - "license": "MIT", "peerDependencies": { "typescript": ">= 4.3.x" } @@ -18272,7 +18304,6 @@ "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz", "integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==", "dev": true, - "license": "MIT", "dependencies": { "ast-types": "^0.16.1", "esprima": "~4.0.0", @@ -18289,7 +18320,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -18512,7 +18542,6 @@ "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.10" } @@ -19672,7 +19701,6 @@ "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", "dev": true, - "license": "MIT", "dependencies": { "css-select": "^4.1.3", "dom-converter": "^0.2.0", @@ -19915,7 +19943,6 @@ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, - "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -20514,13 +20541,12 @@ } }, "node_modules/storybook": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.4.4.tgz", - "integrity": "sha512-xBOq3q/MuUUg3zM0imMMaK5ziKq3TO388jsnaiemJ4Uf0ZGwcHjM8HDBCDt0s5/CfsOQ49zo1ouZ3aNlu0qsUg==", + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.4.5.tgz", + "integrity": "sha512-9tfgabXnMibYp3SvoaJXXMD63Pw0SA9Hnf5v6TxysCYZs4DZ/04fAkK+9RW+K4C5JkV83qXMMlrsPj766R47fg==", "dev": true, - "license": "MIT", "dependencies": { - "@storybook/core": "8.4.4" + "@storybook/core": "8.4.5" }, "bin": { "getstorybook": "bin/index.cjs", @@ -20870,7 +20896,6 @@ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", "dev": true, - "license": "MIT", "dependencies": { "min-indent": "^1.0.1" }, @@ -20899,7 +20924,6 @@ "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", "dev": true, - "license": "MIT", "engines": { "node": ">= 12.13.0" }, @@ -21698,8 +21722,7 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/tinyglobby": { "version": "0.2.10", @@ -21859,7 +21882,6 @@ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", "dev": true, - "license": "MIT", "dependencies": { "json5": "^2.2.2", "minimist": "^1.2.6", @@ -21874,7 +21896,6 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -22666,7 +22687,6 @@ "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", "dev": true, - "license": "MIT", "dependencies": { "punycode": "^1.4.1", "qs": "^6.12.3" @@ -22690,8 +22710,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/use-callback-ref": { "version": "1.3.2", @@ -22780,8 +22799,7 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", - "dev": true, - "license": "MIT" + "dev": true }, "node_modules/uvu": { "version": "0.5.6", @@ -23140,7 +23158,6 @@ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.3.tgz", "integrity": "sha512-A4ChP0Qj8oGociTs6UdlRUGANIGrCDL3y+pmQMc+dSsraXHCatFpmMey4mYELA+juqwUqwQsUgJJISXl1KWmiw==", "dev": true, - "license": "MIT", "dependencies": { "colorette": "^2.0.10", "memfs": "^3.4.12", @@ -23169,7 +23186,6 @@ "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.26.1.tgz", "integrity": "sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A==", "dev": true, - "license": "MIT", "dependencies": { "ansi-html-community": "0.0.8", "html-entities": "^2.1.0", From 029b1679fb46dad882d584738550813cf725376d Mon Sep 17 00:00:00 2001 From: Claudio W Date: Sun, 24 Nov 2024 15:37:25 +0000 Subject: [PATCH 14/65] chore: simplified storybook/next config (#7280) Co-authored-by: Augustin Mauroy --- apps/site/.storybook/main.ts | 10 ---------- apps/site/next.config.mjs | 8 ++------ apps/site/turbo.json | 16 ++++++++++++---- 3 files changed, 14 insertions(+), 20 deletions(-) diff --git a/apps/site/.storybook/main.ts b/apps/site/.storybook/main.ts index 33db0069c6ee6..8c8a4087103a6 100644 --- a/apps/site/.storybook/main.ts +++ b/apps/site/.storybook/main.ts @@ -45,24 +45,14 @@ const config: StorybookConfig = { resolve: { ...config.resolve, alias: { - '@nodevu/core': false, 'next-intl/navigation': join(mocksFolder, './next-intl.mjs'), '@/client-context': join(mocksFolder, './client-context.mjs'), '@': join(__dirname, '../'), }, }, - // We need to configure `node:` APIs as Externals to WebPack - // since essentially they're not supported on the browser - externals: { - 'node:fs': 'commonjs fs', - 'node:url': 'commonjs url', - 'node:path': 'commonjs path', - 'node:readline': 'commonjs readline', - }, // Removes Pesky Critical Dependency Warnings due to `next/font` ignoreWarnings: [ e => - e.message.includes('Critical dep') || e.message.includes('was not found in') || e.message.includes('generated code contains'), ], diff --git a/apps/site/next.config.mjs b/apps/site/next.config.mjs index 167b52803379e..91c19366aae3c 100644 --- a/apps/site/next.config.mjs +++ b/apps/site/next.config.mjs @@ -7,11 +7,6 @@ import { redirects, rewrites } from './next.rewrites.mjs'; /** @type {import('next').NextConfig} */ const nextConfig = { - // Just to ensure that React is always on strict mode - reactStrictMode: true, - // We intentionally disable Next.js's built-in i18n support - // as we dom have our own i18n and internationalisation engine - i18n: null, // We don't use trailing slashes on URLs from the Node.js Website trailingSlash: false, // We don't want to redirect with trailing slashes @@ -23,7 +18,8 @@ const nextConfig = { images: { // We disable image optimisation during static export builds unoptimized: ENABLE_STATIC_EXPORT, - // We add it to the remote pattern for the static images we use from GitHub + // We add it to the remote pattern for the static images we use from multiple sources + // to be marked as safe sources (these come from Markdown files) remotePatterns: [ { protocol: 'https', diff --git a/apps/site/turbo.json b/apps/site/turbo.json index 00975a1d5573f..451ec871b7352 100644 --- a/apps/site/turbo.json +++ b/apps/site/turbo.json @@ -16,7 +16,9 @@ "NEXT_PUBLIC_BASE_PATH", "NEXT_PUBLIC_ORAMA_API_KEY", "NEXT_PUBLIC_ORAMA_ENDPOINT", - "NEXT_PUBLIC_DATA_URL" + "NEXT_PUBLIC_DATA_URL", + "TURBO_CACHE", + "TURBO_TELEMETRY_DISABLED" ] }, "build": { @@ -39,7 +41,9 @@ "NEXT_PUBLIC_BASE_PATH", "NEXT_PUBLIC_ORAMA_API_KEY", "NEXT_PUBLIC_ORAMA_ENDPOINT", - "NEXT_PUBLIC_DATA_URL" + "NEXT_PUBLIC_DATA_URL", + "TURBO_CACHE", + "TURBO_TELEMETRY_DISABLED" ] }, "start": { @@ -55,7 +59,9 @@ "NEXT_PUBLIC_BASE_PATH", "NEXT_PUBLIC_ORAMA_API_KEY", "NEXT_PUBLIC_ORAMA_ENDPOINT", - "NEXT_PUBLIC_DATA_URL" + "NEXT_PUBLIC_DATA_URL", + "TURBO_CACHE", + "TURBO_TELEMETRY_DISABLED" ] }, "deploy": { @@ -77,7 +83,9 @@ "NEXT_PUBLIC_BASE_PATH", "NEXT_PUBLIC_ORAMA_API_KEY", "NEXT_PUBLIC_ORAMA_ENDPOINT", - "NEXT_PUBLIC_DATA_URL" + "NEXT_PUBLIC_DATA_URL", + "TURBO_CACHE", + "TURBO_TELEMETRY_DISABLED" ] }, "lint:js": { From abe9879646a0f154022def7b02654dc540ced6b7 Mon Sep 17 00:00:00 2001 From: Claudio W Date: Mon, 25 Nov 2024 14:47:00 +0000 Subject: [PATCH 15/65] meta: upgrade to node v22 (#7282) --- .nvmrc | 2 +- apps/site/package.json | 17 +- package-lock.json | 877 +++++++++++++++++-------------------- package.json | 5 +- packages/i18n/package.json | 3 - 5 files changed, 413 insertions(+), 491 deletions(-) diff --git a/.nvmrc b/.nvmrc index 209e3ef4b6247..53d1c14db376e 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -20 +v22 diff --git a/apps/site/package.json b/apps/site/package.json index b984c3f51e48b..812bc7d887352 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -1,20 +1,6 @@ { - "type": "module", - "private": true, "name": "@node-core/website", - "description": "Nodejs.org Website", - "homepage": "https://nodejs.org", - "repository": { - "type": "git", - "url": "git+https://github.com/nodejs/nodejs.org.git" - }, - "author": { - "name": "Node.js Website Working Group" - }, - "license": "MIT", - "engines": { - "node": "v20" - }, + "type": "module", "scripts": { "scripts:release-post": "cross-env NODE_NO_WARNINGS=1 node scripts/release-post/index.mjs", "dev": "cross-env NODE_NO_WARNINGS=1 next dev --turbopack", @@ -56,7 +42,6 @@ "@radix-ui/react-tooltip": "^1.1.4", "@savvywombat/tailwindcss-grid-areas": "~4.0.0", "@tailwindcss/container-queries": "~0.1.1", - "@types/node": "20.16.5", "@vcarl/remark-headings": "~0.1.0", "@vercel/analytics": "~1.4.1", "@vercel/otel": "~1.10.0", diff --git a/package-lock.json b/package-lock.json index ec8832da84904..cc246d60b6c65 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,6 +18,7 @@ "devDependencies": { "@eslint/js": "~9.15.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", @@ -27,12 +28,11 @@ "prettier-plugin-tailwindcss": "0.6.9" }, "engines": { - "node": "v20" + "node": "v22" } }, "apps/site": { "name": "@node-core/website", - "license": "MIT", "dependencies": { "@heroicons/react": "~2.2.0", "@mdx-js/mdx": "^3.1.0", @@ -54,7 +54,6 @@ "@radix-ui/react-tooltip": "^1.1.4", "@savvywombat/tailwindcss-grid-areas": "~4.0.0", "@tailwindcss/container-queries": "~0.1.1", - "@types/node": "20.16.5", "@vcarl/remark-headings": "~0.1.0", "@vercel/analytics": "~1.4.1", "@vercel/otel": "~1.10.0", @@ -931,6 +930,7 @@ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -991,6 +991,7 @@ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.0.tgz", "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@eslint/object-schema": "^2.1.4", "debug": "^4.3.1", @@ -1036,6 +1037,7 @@ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz", "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -1137,6 +1139,7 @@ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.15.0.tgz", "integrity": "sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -1146,6 +1149,7 @@ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -1202,13 +1206,13 @@ "license": "MIT" }, "node_modules/@formatjs/ecma402-abstract": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.2.3.tgz", - "integrity": "sha512-aElGmleuReGnk2wtYOzYFmNWYoiWWmf1pPPCYg0oiIQSJj0mjc4eUfzUXaSOJ4S8WzI/cLqnCTWjqz904FT2OQ==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.2.4.tgz", + "integrity": "sha512-lFyiQDVvSbQOpU+WFd//ILolGj4UgA/qXrKeZxdV14uKiAUiPAtX6XAn7WBCRi7Mx6I7EybM9E5yYn4BIpZWYg==", "license": "MIT", "dependencies": { "@formatjs/fast-memoize": "2.2.3", - "@formatjs/intl-localematcher": "0.5.7", + "@formatjs/intl-localematcher": "0.5.8", "tslib": "2" } }, @@ -1222,30 +1226,30 @@ } }, "node_modules/@formatjs/icu-messageformat-parser": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.9.3.tgz", - "integrity": "sha512-9L99QsH14XjOCIp4TmbT8wxuffJxGK8uLNO1zNhLtcZaVXvv626N0s4A2qgRCKG3dfYWx9psvGlFmvyVBa6u/w==", + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.9.4.tgz", + "integrity": "sha512-Tbvp5a9IWuxUcpWNIW6GlMQYEc4rwNHR259uUFoKWNN1jM9obf9Ul0e+7r7MvFOBNcN+13K7NuKCKqQiAn1QEg==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.2.3", - "@formatjs/icu-skeleton-parser": "1.8.7", + "@formatjs/ecma402-abstract": "2.2.4", + "@formatjs/icu-skeleton-parser": "1.8.8", "tslib": "2" } }, "node_modules/@formatjs/icu-skeleton-parser": { - "version": "1.8.7", - "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.7.tgz", - "integrity": "sha512-fI+6SmS2g7h3srfAKSWa5dwreU5zNEfon2uFo99OToiLF6yxGE+WikvFSbsvMAYkscucvVmTYNlWlaDPp0n5HA==", + "version": "1.8.8", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.8.tgz", + "integrity": "sha512-vHwK3piXwamFcx5YQdCdJxUQ1WdTl6ANclt5xba5zLGDv5Bsur7qz8AD7BevaKxITwpgDeU0u8My3AIibW9ywA==", "license": "MIT", "dependencies": { - "@formatjs/ecma402-abstract": "2.2.3", + "@formatjs/ecma402-abstract": "2.2.4", "tslib": "2" } }, "node_modules/@formatjs/intl-localematcher": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.7.tgz", - "integrity": "sha512-GGFtfHGQVFe/niOZp24Kal5b2i36eE2bNL0xi9Sg/yd0TR8aLjcteApZdHmismP5QQax1cMnZM9yWySUUjJteA==", + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.8.tgz", + "integrity": "sha512-I+WDNWWJFZie+jkfkiK5Mp4hEDyRSEvmyfYadflOno/mmKJKcB17fEpEH0oJu/OWhhCJ8kJBDz2YMd/6cDl7Mg==", "license": "MIT", "dependencies": { "tslib": "2" @@ -1255,6 +1259,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.2.0.tgz", "integrity": "sha512-LMcepvRaS9LYHJGsF0zzmgKCUim/X3N/DQKc4jepAXJ7l8QxJ1PmxJzqplF2Z3FE4PqBAIGyJAQ/w4B5dsqbtQ==", + "license": "MIT", "peerDependencies": { "react": ">= 16 || ^19.0.0-rc" } @@ -1686,19 +1691,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/core/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@jest/core/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -2188,36 +2180,6 @@ "fast-glob": "3.3.1" } }, - "node_modules/@next/eslint-plugin-next/node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/@next/eslint-plugin-next/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/@next/swc-darwin-arm64": { "version": "15.0.3", "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.0.3.tgz", @@ -2309,9 +2271,9 @@ } }, "node_modules/@noble/hashes": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.5.0.tgz", - "integrity": "sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.1.tgz", + "integrity": "sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==", "license": "MIT", "engines": { "node": "^14.21.3 || >=16" @@ -2730,9 +2692,9 @@ } }, "node_modules/@opentelemetry/api-logs": { - "version": "0.54.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.54.2.tgz", - "integrity": "sha512-4MTVwwmLgUh5QrJnZpYo6YRO5IBLAggf2h8gWDblwRagDStY13aEvt7gGk3jewrMaPlHiF83fENhIx0HO97/cQ==", + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.55.0.tgz", + "integrity": "sha512-3cpa+qI45VHYcA5c0bHM6VHo9gicv3p5mlLHNG3rLyjQU8b7e0st1rWtrUn3JbZ3DwwCfhKop4eQ9UuYlC6Pkg==", "license": "Apache-2.0", "peer": true, "dependencies": { @@ -2743,9 +2705,9 @@ } }, "node_modules/@opentelemetry/core": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.27.0.tgz", - "integrity": "sha512-yQPKnK5e+76XuiqUH/gKyS8wv/7qITd5ln56QkBTf3uggr0VkXOXfcaAuG330UfdYu83wsyoBwqwxigpIG+Jkg==", + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.28.0.tgz", + "integrity": "sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw==", "license": "Apache-2.0", "peer": true, "dependencies": { @@ -2759,13 +2721,13 @@ } }, "node_modules/@opentelemetry/instrumentation": { - "version": "0.54.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.54.2.tgz", - "integrity": "sha512-go6zpOVoZVztT9r1aPd79Fr3OWiD4N24bCPJsIKkBses8oyFo12F/Ew3UBTdIu6hsW4HC4MVEJygG6TEyJI/lg==", + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.55.0.tgz", + "integrity": "sha512-YDCMlaQRZkziLL3t6TONRgmmGxDx6MyQDXRD0dknkkgUZtOK5+8MWft1OXzmNu6XfBOdT12MKN5rz+jHUkafKQ==", "license": "Apache-2.0", "peer": true, "dependencies": { - "@opentelemetry/api-logs": "0.54.2", + "@opentelemetry/api-logs": "0.55.0", "@types/shimmer": "^1.2.0", "import-in-the-middle": "^1.8.1", "require-in-the-middle": "^7.1.1", @@ -2780,13 +2742,13 @@ } }, "node_modules/@opentelemetry/resources": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.27.0.tgz", - "integrity": "sha512-jOwt2VJ/lUD5BLc+PMNymDrUCpm5PKi1E9oSVYAvz01U/VdndGmrtV3DU1pG4AwlYhJRHbHfOUIlpBeXCPw6QQ==", + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.28.0.tgz", + "integrity": "sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw==", "license": "Apache-2.0", "peer": true, "dependencies": { - "@opentelemetry/core": "1.27.0", + "@opentelemetry/core": "1.28.0", "@opentelemetry/semantic-conventions": "1.27.0" }, "engines": { @@ -2797,15 +2759,15 @@ } }, "node_modules/@opentelemetry/sdk-logs": { - "version": "0.54.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.54.2.tgz", - "integrity": "sha512-yIbYqDLS/AtBbPjCjh6eSToGNRMqW2VR8RrKEy+G+J7dFG7pKoptTH5T+XlKPleP9NY8JZYIpgJBlI+Osi0rFw==", + "version": "0.55.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.55.0.tgz", + "integrity": "sha512-TSx+Yg/d48uWW6HtjS1AD5x6WPfLhDWLl/WxC7I2fMevaiBuKCuraxTB8MDXieCNnBI24bw9ytyXrDCswFfWgA==", "license": "Apache-2.0", "peer": true, "dependencies": { - "@opentelemetry/api-logs": "0.54.2", - "@opentelemetry/core": "1.27.0", - "@opentelemetry/resources": "1.27.0" + "@opentelemetry/api-logs": "0.55.0", + "@opentelemetry/core": "1.28.0", + "@opentelemetry/resources": "1.28.0" }, "engines": { "node": ">=14" @@ -2815,14 +2777,14 @@ } }, "node_modules/@opentelemetry/sdk-metrics": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.27.0.tgz", - "integrity": "sha512-JzWgzlutoXCydhHWIbLg+r76m+m3ncqvkCcsswXAQ4gqKS+LOHKhq+t6fx1zNytvLuaOUBur7EvWxECc4jPQKg==", + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-1.28.0.tgz", + "integrity": "sha512-43tqMK/0BcKTyOvm15/WQ3HLr0Vu/ucAl/D84NO7iSlv6O4eOprxSHa3sUtmYkaZWHqdDJV0AHVz/R6u4JALVQ==", "license": "Apache-2.0", "peer": true, "dependencies": { - "@opentelemetry/core": "1.27.0", - "@opentelemetry/resources": "1.27.0" + "@opentelemetry/core": "1.28.0", + "@opentelemetry/resources": "1.28.0" }, "engines": { "node": ">=14" @@ -2832,14 +2794,14 @@ } }, "node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.27.0.tgz", - "integrity": "sha512-btz6XTQzwsyJjombpeqCX6LhiMQYpzt2pIYNPnw0IPO/3AhT6yjnf8Mnv3ZC2A4eRYOjqrg+bfaXg9XHDRJDWQ==", + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.28.0.tgz", + "integrity": "sha512-ceUVWuCpIao7Y5xE02Xs3nQi0tOGmMea17ecBdwtCvdo9ekmO+ijc9RFDgfifMl7XCBf41zne/1POM3LqSTZDA==", "license": "Apache-2.0", "peer": true, "dependencies": { - "@opentelemetry/core": "1.27.0", - "@opentelemetry/resources": "1.27.0", + "@opentelemetry/core": "1.28.0", + "@opentelemetry/resources": "1.28.0", "@opentelemetry/semantic-conventions": "1.27.0" }, "engines": { @@ -2859,6 +2821,15 @@ "node": ">=14" } }, + "node_modules/@orama/highlight": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@orama/highlight/-/highlight-0.1.6.tgz", + "integrity": "sha512-6Va8paStIoVy5algYDQu1hU0NUCkcrBx7FSt+0Lllp4d2VA1aVi6ACQ7xoINYls8sDZqg6vXf2lj4YDlVamBtw==", + "license": "Apache-2.0", + "dependencies": { + "@orama/orama": "^2.0.0-beta.1" + } + }, "node_modules/@orama/orama": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@orama/orama/-/orama-2.1.1.tgz", @@ -2868,6 +2839,20 @@ "node": ">= 16.0.0" } }, + "node_modules/@oramacloud/client": { + "version": "1.3.16", + "resolved": "https://registry.npmjs.org/@oramacloud/client/-/client-1.3.16.tgz", + "integrity": "sha512-WOc7hcg40x5OZb1rPiH/qSLeDb1hzCy4jVIV1wSfwni/ZQ4cHRyDKuMda5iyjF3A+ZgQfH1P5Oqi03cZSZw98g==", + "license": "ISC", + "dependencies": { + "@orama/orama": "^2.0.16", + "@paralleldrive/cuid2": "^2.2.1", + "lodash": "^4.17.21", + "openai": "^4.24.1", + "react": "^18.2.0", + "vue": "^3.4.25" + } + }, "node_modules/@paralleldrive/cuid2": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz", @@ -3856,6 +3841,7 @@ "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.4.5.tgz", "integrity": "sha512-RVTtDDuESLYc1+SJQv2kI7wzBddzAS9uoEe8P75quN6S4pC0GxAB6xirWZ2+WOcba4eHosY+PxMwuBXQfH78Ew==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", "dequal": "^2.0.2", @@ -3874,6 +3860,7 @@ "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.4.5.tgz", "integrity": "sha512-s6R8XVD8LTp+LQTDbhtDjDLE6S44I7FtMLxPdMNwN9VEJjBk01NONLDuGDpNq5o/0bnybA3rMHk9+3afsgzidQ==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", "@storybook/instrumenter": "8.4.5", @@ -3889,139 +3876,6 @@ "storybook": "^8.4.5" } }, - "node_modules/@storybook/addon-interactions/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, - "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/addon-interactions/node_modules/@storybook/test": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.4.5.tgz", - "integrity": "sha512-mHsRc6m60nfcEBsjvUkKz+Jnz0or4WH5jmJ1VL2pGKO4VzESCPqAwDnwDqP2YyeSQ0b/MAKUT5kdoLE2RE2eVw==", - "dev": true, - "dependencies": { - "@storybook/csf": "^0.1.11", - "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.4.5", - "@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.5" - } - }, - "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, - "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/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=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, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/addon-interactions/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@storybook/addon-interactions/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "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 - }, - "node_modules/@storybook/addon-interactions/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/addon-interactions/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "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", @@ -4040,6 +3894,7 @@ "resolved": "https://registry.npmjs.org/@storybook/addon-themes/-/addon-themes-8.4.5.tgz", "integrity": "sha512-4ZheodvdAjAXbzx3HLmPxin5ULh1lPp7QH8Yi8SijRcreUYFiKvPfaTvR0pEcaFppwPXu1gVQlud5GLMTLEQgQ==", "dev": true, + "license": "MIT", "dependencies": { "ts-dedent": "^2.0.0" }, @@ -4056,6 +3911,7 @@ "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.4.5.tgz", "integrity": "sha512-l7Y41gIbJAsIN/QCg1QJ9sr61FLz1C/imUotcDej41tOHxUTSQOlXpNtVnfhUM1vGQc0yNpP3pVxj8BpXi0cAw==", "dev": true, + "license": "MIT", "dependencies": { "memoizerific": "^1.11.3" }, @@ -4086,6 +3942,7 @@ "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.4.5.tgz", "integrity": "sha512-5TSpirK2LIL4Wultpowlkrv3iAje57HTw92Hy6c4Zn64tAs30123mkdE6MoJcXMBfD4JwX9I2K2Q+ofZXblJPg==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/core-webpack": "8.4.5", "@types/node": "^22.0.0", @@ -4131,6 +3988,7 @@ "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.4.5.tgz", "integrity": "sha512-2PdnKfqNNv3sO7qILgWXiNvmLOi503oN9OMemNCQjTIvdvySc5JpS9/eClwcl/JfmE4qHdSHZr8dLLkBM9S7+Q==", "dev": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -4144,6 +4002,7 @@ "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.4.5.tgz", "integrity": "sha512-aB1sQNX5nRoUAqg5u1py0MuR/VPd6c6PhECa4rW6pmr7kZcfyP4PP6UFpXuN71ypTQlkRE3Vc5PQZ3gLhE9o3g==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/csf": "^0.1.11", "better-opn": "^3.0.2", @@ -4175,6 +4034,7 @@ "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.4.5.tgz", "integrity": "sha512-IpK/3fM+l2WjRNplTtP+MtnRf/394GcBwyemZknUCzFFDJWNYAN1+meEZmOaZKzJ3tQyRYiErrJLHzd1+UH6Dw==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "^22.0.0", "ts-dedent": "^2.0.0" @@ -4197,19 +4057,6 @@ "type-fest": "^2.19.0" } }, - "node_modules/@storybook/csf/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@storybook/global": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/@storybook/global/-/global-5.0.0.tgz", @@ -4217,11 +4064,30 @@ "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==", "dev": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -4231,9 +4097,9 @@ } }, "node_modules/@storybook/node-logger": { - "version": "8.4.4", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.4.4.tgz", - "integrity": "sha512-SONyAqPtwB0prZN0ekhAiM2K/n674keOCGnGX5QLRuDYjqhhFq/vmtw1L43dMYu6qlA29cGfxosvrr7pDa+kHg==", + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.4.5.tgz", + "integrity": "sha512-AVK/w17vrjTnmdfkHQaIjSFJDP9lJ/fXCT2d9/POUz6KXH0sTWFDb6dPMnjX+Fcu5Ef28kT91RQ+lnWUmLql8Q==", "dev": true, "license": "MIT", "funding": { @@ -4249,6 +4115,7 @@ "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.4.5.tgz", "integrity": "sha512-BKPAN7G0yFXfojQdF8tvgwVJ0ldcl6+p1JtAPAieH69BMGni3TEPnvPhkefRWcM8oM8pl+Hch/J2PLHiZ6QKNQ==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/core-webpack": "8.4.5", "@storybook/react": "8.4.5", @@ -4286,6 +4153,7 @@ "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.4.5.tgz", "integrity": "sha512-MKIZ2jQO/3cUdsT57eq8jRgB6inALo9BxrQ88f7mqzltOkMvADvTAY6y8JZqTUoDzWTH/ny/8SGGdtpqlxRuiQ==", "dev": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -4299,6 +4167,7 @@ "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.4.5.tgz", "integrity": "sha512-2+p4aGEdGOnu2XNhnMi1B8GPeszm34P905HgqGD1cuz9gMt7x/bgZQaVxs6kpHZ3Hb6V9qp62La2dbAYatHdSw==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/components": "8.4.5", "@storybook/global": "^5.0.0", @@ -4335,6 +4204,7 @@ "resolved": "https://registry.npmjs.org/@storybook/react-docgen-typescript-plugin/-/react-docgen-typescript-plugin-1.0.6--canary.9.0c3f3b7.0.tgz", "integrity": "sha512-KUqXC3oa9JuQ0kZJLBhVdS4lOneKTOopnNBK4tUAgoxWQ3u/IjzdueZjFr7gyBrXMoU6duutk3RQR9u8ZpYJ4Q==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.1.1", "endent": "^2.0.1", @@ -4354,6 +4224,7 @@ "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.4.5.tgz", "integrity": "sha512-YTWTfPagptEYXJsnxAl3zP97Ev0zebtaEV0WgjGaEeumr+zsfgKKwzzHxgrtumBmDzwkuKlzFwlQB5A8keOIGA==", "dev": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -4369,6 +4240,7 @@ "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-8.4.5.tgz", "integrity": "sha512-tmYO68I4c0mn2XwM4/WkzEVdP27umfa+Sce+NHkk6fGlp25BiKw70uE8sOkM1leB0wn4ktn9eBw46xXdJv2oew==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/builder-webpack5": "8.4.5", "@storybook/preset-react-webpack": "8.4.5", @@ -4451,6 +4323,7 @@ "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.4.5.tgz", "integrity": "sha512-45e/jeG4iuqdZcHg3PbB6dwXQTwlnnEB7r/QcVExyC7ibrkTnjUfvxzyUw4mmU3CXETFGD5EcUobFkgK+/aPxQ==", "dev": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -4460,15 +4333,15 @@ } }, "node_modules/@swc/core": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.9.2.tgz", - "integrity": "sha512-dYyEkO6mRYtZFpnOsnYzv9rY69fHAHoawYOjGOEcxk9WYtaJhowMdP/w6NcOKnz2G7GlZaenjkzkMa6ZeQeMsg==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.9.3.tgz", + "integrity": "sha512-oRj0AFePUhtatX+BscVhnzaAmWjpfAeySpM1TCbxA1rtBDeH/JDhi5yYzAKneDYtVtBvA7ApfeuzhMC9ye4xSg==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.15" + "@swc/types": "^0.1.17" }, "engines": { "node": ">=10" @@ -4478,16 +4351,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.9.2", - "@swc/core-darwin-x64": "1.9.2", - "@swc/core-linux-arm-gnueabihf": "1.9.2", - "@swc/core-linux-arm64-gnu": "1.9.2", - "@swc/core-linux-arm64-musl": "1.9.2", - "@swc/core-linux-x64-gnu": "1.9.2", - "@swc/core-linux-x64-musl": "1.9.2", - "@swc/core-win32-arm64-msvc": "1.9.2", - "@swc/core-win32-ia32-msvc": "1.9.2", - "@swc/core-win32-x64-msvc": "1.9.2" + "@swc/core-darwin-arm64": "1.9.3", + "@swc/core-darwin-x64": "1.9.3", + "@swc/core-linux-arm-gnueabihf": "1.9.3", + "@swc/core-linux-arm64-gnu": "1.9.3", + "@swc/core-linux-arm64-musl": "1.9.3", + "@swc/core-linux-x64-gnu": "1.9.3", + "@swc/core-linux-x64-musl": "1.9.3", + "@swc/core-win32-arm64-msvc": "1.9.3", + "@swc/core-win32-ia32-msvc": "1.9.3", + "@swc/core-win32-x64-msvc": "1.9.3" }, "peerDependencies": { "@swc/helpers": "*" @@ -4499,9 +4372,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.9.2.tgz", - "integrity": "sha512-kZrNz/PjRQKcchWF6W292jk3K44EoVu1ad5w+zbS4jekIAxsM8WwQ1kd+yjUlN9jFcF8XBat5NKIs9WphJCVXg==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.9.3.tgz", + "integrity": "sha512-ivXXBRDXDc9k4cdv10R21ccBmGebVOwKXT/UdH1PhxUn9m/h8erAWjz5pcELwjiMf27WokqPgaWVfaclDbgE+w==", "cpu": [ "x64" ], @@ -4516,9 +4389,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.9.2.tgz", - "integrity": "sha512-TTIpR4rjMkhX1lnFR+PSXpaL83TrQzp9znRdp2TzYrODlUd/R20zOwSo9vFLCyH6ZoD47bccY7QeGZDYT3nlRg==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.9.3.tgz", + "integrity": "sha512-ILsGMgfnOz1HwdDz+ZgEuomIwkP1PHT6maigZxaCIuC6OPEhKE8uYna22uU63XvYcLQvZYDzpR3ms47WQPuNEg==", "cpu": [ "x64" ], @@ -4539,9 +4412,9 @@ "license": "Apache-2.0" }, "node_modules/@swc/types": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.15.tgz", - "integrity": "sha512-XKaZ+dzDIQ9Ot9o89oJQ/aluI17+VvUnIpYJTcZtvv1iYX6MzHh3Ik2CSR7MdPKpPwfZXHBeCingb2b4PoDVdw==", + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.17.tgz", + "integrity": "sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -4769,7 +4642,8 @@ "version": "0.0.9", "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.9.tgz", "integrity": "sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/eslint": { "version": "9.6.1", @@ -4841,7 +4715,8 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/is-empty": { "version": "1.2.3", @@ -4971,9 +4846,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.9.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz", - "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==", + "version": "22.9.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.3.tgz", + "integrity": "sha512-F3u1fs/fce3FFk+DAxbxc78DF8x0cY09RRL8GnXLmkJ1jvx3TtPdWoTT5/NiYfI5ASqXBmfqJi9dZ3gxMx4lzw==", "license": "MIT", "dependencies": { "undici-types": "~6.19.8" @@ -4993,7 +4868,8 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/prop-types": { "version": "15.7.13", @@ -5027,7 +4903,8 @@ "version": "1.20.6", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.6.tgz", "integrity": "sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/semver": { "version": "7.5.8", @@ -5092,6 +4969,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.1.tgz", "integrity": "sha512-xfvdgA8AP/vxHgtgU310+WBnLB4uJQ9XdyP17RebG26rLtDrQJV3ZYrcopX91GrHmMoH8bdSwMRh2a//TiJ1jQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.8.1", @@ -5148,6 +5026,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.8.1.tgz", "integrity": "sha512-hQUVn2Lij2NAxVFEdvIGxT9gP1tq2yM83m+by3whWFsWC+1y8pxxxHUFE1UqDu2VsGi2i6RLcv4QvouM84U+ow==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "8.8.1", "@typescript-eslint/types": "8.8.1", @@ -5176,6 +5055,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.8.1.tgz", "integrity": "sha512-X4JdU+66Mazev/J0gfXlcC/dV6JI37h+93W9BRYXrSn0hrE64IoWgVkO9MSJgEzoWkxONgaQpICWg8vAN74wlA==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "8.8.1", "@typescript-eslint/visitor-keys": "8.8.1" @@ -5193,6 +5073,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.8.1.tgz", "integrity": "sha512-qSVnpcbLP8CALORf0za+vjLYj1Wp8HSoiI8zYU5tHxRVj30702Z1Yw4cLwfNKhTPWp5+P+k1pjmD5Zd1nhxiZA==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/typescript-estree": "8.8.1", "@typescript-eslint/utils": "8.8.1", @@ -5243,6 +5124,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.1.tgz", "integrity": "sha512-WCcTP4SDXzMd23N27u66zTKMuEevH4uzU8C9jf0RO4E04yVHgQgW+r+TeVTNnO1KIfrL8ebgVVYYMMO3+jC55Q==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -5256,6 +5138,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.1.tgz", "integrity": "sha512-A5d1R9p+X+1js4JogdNilDuuq+EHZdsH9MjTVxXOdVFfTJXunKJR/v+fNNyO4TnoOn5HqobzfRlc70NC6HTcdg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "8.8.1", "@typescript-eslint/visitor-keys": "8.8.1", @@ -5284,6 +5167,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.14.0.tgz", "integrity": "sha512-OGqj6uB8THhrHj0Fk27DcHPojW7zKwKkPmHXHvQ58pLYp4hy8CSUdTKykKeh+5vFqTTVmjz0zCOOPKRovdsgHA==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@typescript-eslint/scope-manager": "8.14.0", @@ -5367,6 +5251,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.14.0.tgz", "integrity": "sha512-vG0XZo8AdTH9OE6VFRwAZldNc7qtJ/6NLGWak+BtENuEUXGZgFpihILPiBvKXvJ2nFu27XNGC6rKiwuaoMbYzQ==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "8.15.0", "eslint-visitor-keys": "^4.2.0" @@ -5465,6 +5350,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-1.4.1.tgz", "integrity": "sha512-ekpL4ReX2TH3LnrRZTUKjHHNpNy9S1I7QmS+g/RQXoSUQ8ienzosuX7T9djZ/s8zPhBx1mpHP/Rw5875N+zQIQ==", + "license": "MPL-2.0", "peerDependencies": { "@remix-run/react": "^2", "@sveltejs/kit": "^1 || ^2", @@ -6056,6 +5942,7 @@ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -6073,6 +5960,7 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -6096,6 +5984,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ansi-html-community": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", @@ -6104,6 +6005,7 @@ "engines": [ "node >= 0.8.0" ], + "license": "Apache-2.0", "bin": { "ansi-html": "bin/ansi-html" } @@ -6380,6 +6282,7 @@ "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.1" }, @@ -6688,6 +6591,7 @@ "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", "dev": true, + "license": "MIT", "dependencies": { "open": "^8.0.4" }, @@ -6763,7 +6667,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/brace-expansion": { "version": "2.0.1", @@ -6902,6 +6807,7 @@ "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dev": true, + "license": "MIT", "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" @@ -6927,9 +6833,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001680", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz", - "integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==", + "version": "1.0.30001684", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001684.tgz", + "integrity": "sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==", "funding": [ { "type": "opencollective", @@ -6951,6 +6857,7 @@ "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -7142,6 +7049,7 @@ "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "dev": true, + "license": "MIT", "dependencies": { "source-map": "~0.6.0" }, @@ -7154,6 +7062,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -7488,7 +7397,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/concat-map": { "version": "0.0.1", @@ -7532,7 +7442,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/conventional-commit-types": { "version": "3.0.0", @@ -7651,9 +7562,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.5.tgz", - "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -7679,6 +7590,7 @@ "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz", "integrity": "sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==", "dev": true, + "license": "MIT", "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.33", @@ -7731,6 +7643,7 @@ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">= 6" }, @@ -8079,6 +7992,7 @@ "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -8248,6 +8162,7 @@ "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", "dev": true, + "license": "MIT", "dependencies": { "utila": "~0.4" } @@ -8287,7 +8202,8 @@ "type": "github", "url": "https://github.com/sponsors/fb55" } - ] + ], + "license": "BSD-2-Clause" }, "node_modules/domexception": { "version": "4.0.0", @@ -8339,6 +8255,7 @@ "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -8386,6 +8303,7 @@ "resolved": "https://registry.npmjs.org/endent/-/endent-2.1.0.tgz", "integrity": "sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==", "dev": true, + "license": "MIT", "dependencies": { "dedent": "^0.7.0", "fast-json-parse": "^1.0.3", @@ -8674,6 +8592,7 @@ "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -8712,6 +8631,7 @@ "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^4.3.4" }, @@ -8779,6 +8699,7 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.15.0.tgz", "integrity": "sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", @@ -8900,23 +8821,53 @@ "is-glob": "^4.0.3" }, "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*", - "eslint-plugin-import-x": "*" - }, - "peerDependenciesMeta": { - "eslint-plugin-import": { - "optional": true - }, - "eslint-plugin-import-x": { - "optional": true - } + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-typescript/node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/eslint-import-resolver-typescript/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, "node_modules/eslint-mdx": { @@ -9037,6 +8988,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.4.3.tgz", "integrity": "sha512-QBprHvhLsfDhP++2T1NnjsOUt6bLDX3NMHaYwAB1FD3xmYTkdFH+HS1OamGhz28jLkRyIZa6UNAzTxbHnJwz5w==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/utils": "^8.1.0", "debug": "^4.3.4", @@ -10052,9 +10004,10 @@ "license": "MIT" }, "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -10071,6 +10024,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -10083,7 +10037,8 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz", "integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", @@ -10245,6 +10200,7 @@ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, + "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", @@ -10324,9 +10280,9 @@ } }, "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", "dev": true, "license": "ISC" }, @@ -10361,6 +10317,7 @@ "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz", "integrity": "sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.16.7", "chalk": "^4.1.2", @@ -10389,6 +10346,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -10449,6 +10407,7 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, + "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -10465,6 +10424,7 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -10517,6 +10477,7 @@ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, + "license": "ISC", "engines": { "node": ">= 6" } @@ -10596,7 +10557,8 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", - "dev": true + "dev": true, + "license": "Unlicense" }, "node_modules/fs.realpath": { "version": "1.0.0", @@ -11274,6 +11236,7 @@ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, + "license": "MIT", "bin": { "he": "bin/he" } @@ -11338,7 +11301,8 @@ "type": "patreon", "url": "https://patreon.com/mdevils" } - ] + ], + "license": "MIT" }, "node_modules/html-escaper": { "version": "2.0.2", @@ -11352,6 +11316,7 @@ "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", "dev": true, + "license": "MIT", "dependencies": { "camel-case": "^4.1.2", "clean-css": "^5.2.2", @@ -11396,6 +11361,7 @@ "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.3.tgz", "integrity": "sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==", "dev": true, + "license": "MIT", "dependencies": { "@types/html-minifier-terser": "^6.0.0", "html-minifier-terser": "^6.0.2", @@ -11505,6 +11471,7 @@ "version": "9.1.7", "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", + "license": "MIT", "bin": { "husky": "bin.js" }, @@ -11533,6 +11500,7 @@ "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, + "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -11769,14 +11737,14 @@ } }, "node_modules/intl-messageformat": { - "version": "10.7.6", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.6.tgz", - "integrity": "sha512-IsMU/hqyy3FJwNJ0hxDfY2heJ7MteSuFvcnCebxRp67di4Fhx1gKKE+qS0bBwUF8yXkX9SsPUhLeX/B6h5SKUA==", + "version": "10.7.7", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.7.tgz", + "integrity": "sha512-F134jIoeYMro/3I0h08D0Yt4N9o9pjddU/4IIxMMURqbAtI2wu70X8hvG1V48W49zXHXv3RKSF/po+0fDfsGjA==", "license": "BSD-3-Clause", "dependencies": { - "@formatjs/ecma402-abstract": "2.2.3", + "@formatjs/ecma402-abstract": "2.2.4", "@formatjs/fast-memoize": "2.2.3", - "@formatjs/icu-messageformat-parser": "2.9.3", + "@formatjs/icu-messageformat-parser": "2.9.4", "tslib": "2" } }, @@ -12020,6 +11988,7 @@ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, + "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -12056,13 +12025,16 @@ } }, "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.0.tgz", + "integrity": "sha512-qfMdqbAQEwBw78ZyReKnlA8ezmPdb9BemzIIip/JkjaZUhitfXDkkr+3QTboW0JrSXT1QWyYShpvnNHGZ4c4yA==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12403,6 +12375,7 @@ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, + "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, @@ -12658,19 +12631,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-circus/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -12860,19 +12820,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-config/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -12928,19 +12875,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-diff/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -13010,19 +12944,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-each/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -13248,19 +13169,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-matcher-utils/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -13321,19 +13229,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-message-util/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -13654,19 +13549,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-snapshot/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -13785,19 +13667,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/jest-validate/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -13906,6 +13775,7 @@ "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz", "integrity": "sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.0.0" } @@ -14708,6 +14578,7 @@ "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^2.0.3" } @@ -14742,9 +14613,9 @@ } }, "node_modules/magic-string": { - "version": "0.30.12", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz", - "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", + "version": "0.30.13", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.13.tgz", + "integrity": "sha512-8rYBO+MsWkgjDSOvLomYnzhdwEG51olQ4zL5KXnNJWV5MNmrb4rTZdrtkhxjnD/QyZUqR/Z/XDsUs/4ej2nx0g==", "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" @@ -14755,6 +14626,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^6.0.0" }, @@ -14770,6 +14642,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -15251,6 +15124,7 @@ "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "dev": true, + "license": "Unlicense", "dependencies": { "fs-monkey": "^1.0.4" }, @@ -15986,9 +15860,9 @@ } }, "node_modules/micromark-util-subtokenize": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.2.tgz", - "integrity": "sha512-xKxhkB62vwHUuuxHe9Xqty3UaAsizV2YKq5OV344u3hFBbf8zIYrhYOWhAQb94MtMPkjTOzzjJ/hid9/dR5vFA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.3.tgz", + "integrity": "sha512-VXJJuNxYWSoYL6AJ6OQECCFGhIU2GGHMw8tahogePBrjkG8aCCas3ibkp7RnVOSTClg2is05/R7maAhF1XyQMg==", "funding": [ { "type": "GitHub Sponsors", @@ -16434,6 +16308,7 @@ "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "dev": true, + "license": "MIT", "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -16443,7 +16318,8 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/node-domexception": { "version": "1.0.0", @@ -16641,6 +16517,7 @@ "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" }, @@ -16786,7 +16663,8 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.5.tgz", "integrity": "sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/once": { "version": "1.4.0", @@ -16830,6 +16708,7 @@ "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, + "license": "MIT", "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -16843,9 +16722,9 @@ } }, "node_modules/openai": { - "version": "4.72.0", - "resolved": "https://registry.npmjs.org/openai/-/openai-4.72.0.tgz", - "integrity": "sha512-hFqG9BWCs7L7ifrhJXw7mJXmUBr7d9N6If3J9563o0jfwVA4wFANFDDaOIWFdgDdwgCXg5emf0Q+LoLCGszQYA==", + "version": "4.73.0", + "resolved": "https://registry.npmjs.org/openai/-/openai-4.73.0.tgz", + "integrity": "sha512-NZstV77w3CEol9KQTRBRQ15+Sw6nxVTicAULSjYO4wn9E5gw72Mtp3fAVaBFXyyVPws4241YmFG6ya4L8v03tA==", "license": "Apache-2.0", "dependencies": { "@types/node": "^18.11.18", @@ -16869,9 +16748,9 @@ } }, "node_modules/openai/node_modules/@types/node": { - "version": "18.19.64", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.64.tgz", - "integrity": "sha512-955mDqvO2vFf/oL7V3WiUtiz+BugyX8uVbaT2H8oj3+8dRyH2FLiNdowe7eNqRM7IOIZvzDH76EoAT+gwm6aIQ==", + "version": "18.19.65", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.65.tgz", + "integrity": "sha512-Ay5BZuO1UkTmVHzZJNvZKw/E+iB3GQABb6kijEz89w2JrfhNA+M/ebp18pfz9Gqe9ywhMC8AA8yC01lZq48J+Q==", "license": "MIT", "dependencies": { "undici-types": "~5.26.4" @@ -17018,6 +16897,7 @@ "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", "dev": true, + "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -17107,6 +16987,7 @@ "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", "dev": true, + "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -17116,7 +16997,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-exists": { "version": "4.0.0", @@ -17572,6 +17454,7 @@ "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", "dev": true, + "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -17584,6 +17467,7 @@ "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.1.0.tgz", "integrity": "sha512-rm0bdSv4jC3BDma3s9H19ZddW0aHX6EoqwDYU2IfZhRN+53QrufTRo2IdkAbRqLx4R2IYbZnbjKKxg4VN5oU9Q==", "dev": true, + "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^7.0.0", @@ -17601,6 +17485,7 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -17614,6 +17499,7 @@ "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", "dev": true, + "license": "ISC", "dependencies": { "postcss-selector-parser": "^7.0.0" }, @@ -17629,6 +17515,7 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -17642,6 +17529,7 @@ "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, + "license": "ISC", "dependencies": { "icss-utils": "^5.0.0" }, @@ -17787,6 +17675,7 @@ "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.9.tgz", "integrity": "sha512-r0i3uhaZAXYP0At5xGfJH876W3HHGHDp+LCRUJrs57PBeQ6mYHMwr25KH8NPX44F2yGTvdnH7OqCshlQx183Eg==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.21.3" }, @@ -17865,6 +17754,7 @@ "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", "dev": true, + "license": "MIT", "dependencies": { "lodash": "^4.17.20", "renderkid": "^3.0.0" @@ -17983,9 +17873,9 @@ } }, "node_modules/psl": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.10.0.tgz", - "integrity": "sha512-KSKHEbjAnpUuAUserOq0FxGXCUrzC3WniuSJhvdbs102rL55266ZcHBqLWOsG30spQMlPdpy7icATiAQehg/iA==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.13.0.tgz", + "integrity": "sha512-BFwmFXiJoFqlUpZ5Qssolv15DMyc84gTBds1BjsV1BfXEo1UyyD7GsmN67n7J77uRhoSNW1AXtXKPLcBFQn9Aw==", "dev": true, "license": "MIT", "dependencies": { @@ -18024,6 +17914,7 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz", "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.6" }, @@ -18087,6 +17978,7 @@ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -18108,6 +18000,7 @@ "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.1.0.tgz", "integrity": "sha512-APPU8HB2uZnpl6Vt/+0AFoVYgSRtfiP6FLrZgPPTDmqSb2R4qZRbgd0A3VzIFxDt5e+Fozjx79WjLWnF69DK8g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.18.9", "@babel/traverse": "^7.18.9", @@ -18129,6 +18022,7 @@ "resolved": "https://registry.npmjs.org/react-docgen-typescript/-/react-docgen-typescript-2.2.2.tgz", "integrity": "sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==", "dev": true, + "license": "MIT", "peerDependencies": { "typescript": ">= 4.3.x" } @@ -18304,6 +18198,7 @@ "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz", "integrity": "sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==", "dev": true, + "license": "MIT", "dependencies": { "ast-types": "^0.16.1", "esprima": "~4.0.0", @@ -18320,6 +18215,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -18416,19 +18312,19 @@ } }, "node_modules/reflect.getprototypeof": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", - "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.7.tgz", + "integrity": "sha512-bMvFGIUKlc/eSfXNX+aZ+EL95/EgZzuwA0OBPTbZZDEJw/0AkentjMuM1oiRfwHrshqk4RzdgiTg5CcDalXN5g==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.23.1", + "es-abstract": "^1.23.5", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" + "gopd": "^1.0.1", + "which-builtin-type": "^1.1.4" }, "engines": { "node": ">= 0.4" @@ -18542,6 +18438,7 @@ "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -19701,6 +19598,7 @@ "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", "dev": true, + "license": "MIT", "dependencies": { "css-select": "^4.1.3", "dom-converter": "^0.2.0", @@ -19943,6 +19841,7 @@ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -20545,6 +20444,7 @@ "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.4.5.tgz", "integrity": "sha512-9tfgabXnMibYp3SvoaJXXMD63Pw0SA9Hnf5v6TxysCYZs4DZ/04fAkK+9RW+K4C5JkV83qXMMlrsPj766R47fg==", "dev": true, + "license": "MIT", "dependencies": { "@storybook/core": "8.4.5" }, @@ -20896,6 +20796,7 @@ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", "dev": true, + "license": "MIT", "dependencies": { "min-indent": "^1.0.1" }, @@ -20924,6 +20825,7 @@ "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 12.13.0" }, @@ -21413,6 +21315,34 @@ "node": ">=14.0.0" } }, + "node_modules/tailwindcss/node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/tailwindcss/node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/tailwindcss/node_modules/lilconfig": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", @@ -21722,7 +21652,8 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tinyglobby": { "version": "0.2.10", @@ -21849,9 +21780,9 @@ } }, "node_modules/ts-api-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.0.tgz", - "integrity": "sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.1.tgz", + "integrity": "sha512-5RU2/lxTA3YUZxju61HO2U6EoZLvBLtmV2mbTvqyu4a/7s7RmJPT+1YekhMVsQhznRWk/czIwDUg+V8Q9ZuG4w==", "dev": true, "license": "MIT", "engines": { @@ -21882,6 +21813,7 @@ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", "dev": true, + "license": "MIT", "dependencies": { "json5": "^2.2.2", "minimist": "^1.2.6", @@ -21896,6 +21828,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -21960,13 +21893,13 @@ } }, "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=10" + "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -22008,9 +21941,9 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.3.tgz", + "integrity": "sha512-GsvTyUHTriq6o/bHcTd0vM7OQ9JEdlvluu9YISaA7+KzDzPaIzEeDFNkTfhdE3MYcNhNi0vq/LlegYgIs5yPAw==", "dev": true, "license": "MIT", "dependencies": { @@ -22019,7 +21952,8 @@ "for-each": "^0.3.3", "gopd": "^1.0.1", "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "is-typed-array": "^1.1.13", + "reflect.getprototypeof": "^1.0.6" }, "engines": { "node": ">= 0.4" @@ -22029,18 +21963,18 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-proto": "^1.0.3", "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" }, "engines": { "node": ">= 0.4" @@ -22687,6 +22621,7 @@ "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", "dev": true, + "license": "MIT", "dependencies": { "punycode": "^1.4.1", "qs": "^6.12.3" @@ -22710,7 +22645,8 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/use-callback-ref": { "version": "1.3.2", @@ -23158,6 +23094,7 @@ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.3.tgz", "integrity": "sha512-A4ChP0Qj8oGociTs6UdlRUGANIGrCDL3y+pmQMc+dSsraXHCatFpmMey4mYELA+juqwUqwQsUgJJISXl1KWmiw==", "dev": true, + "license": "MIT", "dependencies": { "colorette": "^2.0.10", "memfs": "^3.4.12", @@ -23186,6 +23123,7 @@ "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.26.1.tgz", "integrity": "sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-html-community": "0.0.8", "html-entities": "^2.1.0", @@ -23382,17 +23320,18 @@ } }, "node_modules/which-builtin-type": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", - "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.0.tgz", + "integrity": "sha512-I+qLGQ/vucCby4tf5HsLmGueEla4ZhwTBSqaooS+Y0BuxN4Cp+okmGuV+8mXZ84KDI9BA+oklo+RzKg0ONdSUA==", "dev": true, "license": "MIT", "dependencies": { + "call-bind": "^1.0.7", "function.prototype.name": "^1.1.6", "has-tostringtag": "^1.0.2", "is-async-function": "^2.0.0", "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", + "is-finalizationregistry": "^1.1.0", "is-generator-function": "^1.0.10", "is-regex": "^1.1.4", "is-weakref": "^1.0.2", diff --git a/package.json b/package.json index 88a1f3db969ce..445e03f99a468 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { + "name": "nodejs-website", "type": "module", "private": true, - "name": "nodejs-website", "description": "Nodejs.org Website", "homepage": "https://nodejs.org", "repository": { @@ -13,7 +13,7 @@ }, "license": "MIT", "engines": { - "node": "v20" + "node": "v22" }, "workspaces": [ "apps/*", @@ -42,6 +42,7 @@ "devDependencies": { "@eslint/js": "~9.15.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", diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 4622584d40be0..c6a4c56da72c9 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -15,9 +15,6 @@ "build": "tsc --declaration --emitDeclarationOnly", "lint:js": "eslint \"**/*.{js,mjs,ts}\"" }, - "engines": { - "node": ">=20" - }, "devDependencies": { "eslint-import-resolver-typescript": "~3.6.3", "typescript": "~5.6.3", From 6768f011e83d457a1df4ced42907bf0f9bf3fa83 Mon Sep 17 00:00:00 2001 From: Aviv Keller Date: Wed, 27 Nov 2024 07:37:23 -0500 Subject: [PATCH 16/65] meta: skip lighthouse CI when no vercel preview detected (#7266) Update lighthouse.yml Signed-off-by: Aviv Keller --- .github/workflows/lighthouse.yml | 51 +++++++++++++++++++++----------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/.github/workflows/lighthouse.yml b/.github/workflows/lighthouse.yml index be0805d9f8606..90e649986a3ec 100644 --- a/.github/workflows/lighthouse.yml +++ b/.github/workflows/lighthouse.yml @@ -27,12 +27,39 @@ permissions: pull-requests: write jobs: - lighthouse-ci: + get-vercel-preview: # We want to skip our lighthouse analysis on Dependabot PRs if: | startsWith(github.event.pull_request.head.ref, 'dependabot/') == false && github.event.label.name == 'github_actions:pull-request' + name: Get Vercel Preview + runs-on: ubuntu-latest + outputs: + deployment_found: ${{ steps.check_deployment.outputs.deployment_found }} + url: ${{ steps.check_deployment.outputs.url }} + steps: + - name: Capture Vercel Preview + id: check_deployment + uses: patrickedqvist/wait-for-vercel-preview@06c79330064b0e6ef7a2574603b62d3c98789125 # v1.3.2 + with: + token: ${{ secrets.GITHUB_TOKEN }} + max_timeout: 300 # timeout after 5 minutes + check_interval: 10 # check every 10 seconds + continue-on-error: true + - name: Set Outputs + if: always() + id: set_outputs + run: | + if [[ -z "${{ steps.check_deployment.outputs.url }}" ]]; then + echo "deployment_found=false" >> $GITHUB_OUTPUT + else + echo "deployment_found=true" >> $GITHUB_OUTPUT + echo "url=${{ steps.check_deployment.outputs.url }}" >> $GITHUB_OUTPUT + fi + lighthouse-ci: + needs: get-vercel-preview + if: needs.get-vercel-preview.outputs.deployment_found == 'true' name: Lighthouse Report runs-on: ubuntu-latest @@ -57,16 +84,6 @@ jobs: # Used later to edit the existing comment comment-tag: 'lighthouse_audit' - - name: Capture Vercel Preview - uses: patrickedqvist/wait-for-vercel-preview@06c79330064b0e6ef7a2574603b62d3c98789125 # v1.3.2 - id: vercel_preview_url - with: - token: ${{ secrets.GITHUB_TOKEN }} - # timeout after 5 minutes - max_timeout: 300 - # check every 10 seconds - check_interval: 10 - - name: Audit Preview URL with Lighthouse # Conduct the lighthouse audit id: lighthouse_audit @@ -76,11 +93,11 @@ jobs: configPath: './.lighthouserc.json' # These URLS capture critical pages / site functionality. urls: | - ${{ steps.vercel_preview_url.outputs.url }}/en - ${{ steps.vercel_preview_url.outputs.url }}/en/about - ${{ steps.vercel_preview_url.outputs.url }}/en/about/previous-releases - ${{ steps.vercel_preview_url.outputs.url }}/en/download - ${{ steps.vercel_preview_url.outputs.url }}/en/blog + ${{ needs.get-vercel-preview.outputs.url }}/en + ${{ needs.get-vercel-preview.outputs.url }}/en/about + ${{ needs.get-vercel-preview.outputs.url }}/en/about/previous-releases + ${{ needs.get-vercel-preview.outputs.url }}/en/download + ${{ needs.get-vercel-preview.outputs.url }}/en/blog uploadArtifacts: true # save results as a action artifacts temporaryPublicStorage: true # upload lighthouse report to the temporary storage @@ -93,7 +110,7 @@ jobs: # see https://github.com/actions/github-script#use-env-as-input LIGHTHOUSE_RESULT: ${{ steps.lighthouse_audit.outputs.manifest }} LIGHTHOUSE_LINKS: ${{ steps.lighthouse_audit.outputs.links }} - VERCEL_PREVIEW_URL: ${{ steps.vercel_preview_url.outputs.url }} + VERCEL_PREVIEW_URL: ${{ needs.get-vercel-preview.outputs.url }} with: # Run as a separate file so we do not have to inline all of our formatting logic. # See https://github.com/actions/github-script#run-a-separate-file for more info. From 43c4e03e134e3ad3b8c253e46065b07ca591b127 Mon Sep 17 00:00:00 2001 From: Claudio W Date: Thu, 28 Nov 2024 23:51:47 +0100 Subject: [PATCH 17/65] fix: markdown link fix Closes https://github.com/nodejs/nodejs.org/issues/7289 Signed-off-by: Claudio W --- .../pages/en/learn/diagnostics/memory/using-heap-snapshot.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/en/learn/diagnostics/memory/using-heap-snapshot.md b/apps/site/pages/en/learn/diagnostics/memory/using-heap-snapshot.md index dc7061c332e33..dbe951184d81d 100644 --- a/apps/site/pages/en/learn/diagnostics/memory/using-heap-snapshot.md +++ b/apps/site/pages/en/learn/diagnostics/memory/using-heap-snapshot.md @@ -156,7 +156,7 @@ heap snapshot exercise][heapsnapshot exercise]. [take a heap snapshot image]: /static/images/docs/guides/diagnostics/snapshot.png [heapsnapshot-signal flag]: https://nodejs.org/api/cli.html#--heapsnapshot-signalsignal [heapdump package]: https://www.npmjs.com/package/heapdump -[`writeHeapSnapshot` docs]: https://nodejs.org/api/v8.html#v8_v8_writeheapsnapshot_filename +[`writeHeapSnapshot` docs]: https://nodejs.org/api/v8.html#v8writeheapsnapshotfilenameoptions [openprofiling]: https://github.com/vmarchaud/openprofiling-node [load button image]: /static/images/docs/guides/diagnostics/load-snapshot.png [comparison image]: /static/images/docs/guides/diagnostics/compare.png From 8fb835ec583938f01cfc60e2b0d58586455dede9 Mon Sep 17 00:00:00 2001 From: Ben Halverson <7907232+benhalverson@users.noreply.github.com> Date: Fri, 29 Nov 2024 04:55:54 -0800 Subject: [PATCH 18/65] refactor(downloadreleasestable): added module version back to the releases table (#7285) --- apps/site/components/Downloads/DownloadReleasesTable.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/site/components/Downloads/DownloadReleasesTable.tsx b/apps/site/components/Downloads/DownloadReleasesTable.tsx index 306b6ab29df49..2893cca1e776f 100644 --- a/apps/site/components/Downloads/DownloadReleasesTable.tsx +++ b/apps/site/components/Downloads/DownloadReleasesTable.tsx @@ -18,6 +18,7 @@ const DownloadReleasesTable: FC = async () => { Node.js Version + Module Version Codename Release Date npm @@ -27,6 +28,7 @@ const DownloadReleasesTable: FC = async () => { {releaseData.map(release => ( v{release.version} + v{release.modules} {release.codename || '-'} From ee18dac69bce88f4bae1450487a2cbc6fbfed173 Mon Sep 17 00:00:00 2001 From: Claudio W Date: Fri, 29 Nov 2024 14:01:35 +0000 Subject: [PATCH 19/65] hotfix: only one og (#7291) --- apps/site/next.dynamic.mjs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/site/next.dynamic.mjs b/apps/site/next.dynamic.mjs index 8bef1f0094c50..e4cd1a96d2270 100644 --- a/apps/site/next.dynamic.mjs +++ b/apps/site/next.dynamic.mjs @@ -12,6 +12,7 @@ import { BASE_PATH, IS_DEVELOPMENT, DEFAULT_CATEGORY_OG_TYPE, + ENABLE_STATIC_EXPORT, } from './next.constants.mjs'; import { IGNORED_ROUTES, @@ -222,9 +223,9 @@ const getDynamicRouter = async () => { // Default Open Graph Image for the page pageMetadata.openGraph.images = [ - `${defaultLocale.code}/next-data/og/${data.category ?? DEFAULT_CATEGORY_OG_TYPE}/${pageMetadata.title}`, - // Provides the default OG image as the first one will give a 404 on full static exports - `${defaultLocale.code}/next-data/og/announcement/Run JavaScript Everywhere`, + ENABLE_STATIC_EXPORT + ? `${defaultLocale.code}/next-data/og/announcement/Run JavaScript Everywhere` + : `${defaultLocale.code}/next-data/og/${data.category ?? DEFAULT_CATEGORY_OG_TYPE}/${pageMetadata.title}`, ]; // Default canonical URL for the page From 5912ea8f3c3aa35431738d851fbce3b1a204c0a3 Mon Sep 17 00:00:00 2001 From: Augustin Mauroy Date: Fri, 29 Nov 2024 17:59:05 +0100 Subject: [PATCH 20/65] feat(AvatarGroup): update overflow (#7273) * feat(AvatarGroupe): update overflow * fix: align --- .../Common/AvatarGroup/Avatar/index.module.css | 12 +++--------- .../Common/AvatarGroup/index.module.css | 17 ++++++++++++----- .../components/Common/AvatarGroup/index.tsx | 2 +- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/apps/site/components/Common/AvatarGroup/Avatar/index.module.css b/apps/site/components/Common/AvatarGroup/Avatar/index.module.css index 3e7bdb6bb98ef..591354049bda0 100644 --- a/apps/site/components/Common/AvatarGroup/Avatar/index.module.css +++ b/apps/site/components/Common/AvatarGroup/Avatar/index.module.css @@ -21,8 +21,7 @@ } .avatar { - @apply size-8 - flex-shrink-0; + @apply size-8; .wrapper { @apply max-xs:block @@ -32,14 +31,9 @@ .small { @apply xs:size-8 - xs:-ml-2 - ml-0.5 - size-10 - first:ml-0; + size-10; } .medium { - @apply -ml-2.5 - size-10 - first:ml-0; + @apply size-10; } diff --git a/apps/site/components/Common/AvatarGroup/index.module.css b/apps/site/components/Common/AvatarGroup/index.module.css index 3e01660bddc07..bc41f7647d5d1 100644 --- a/apps/site/components/Common/AvatarGroup/index.module.css +++ b/apps/site/components/Common/AvatarGroup/index.module.css @@ -1,7 +1,14 @@ .avatarGroup { - @apply -mb-4 - flex - items-center - overflow-x-auto - pb-4; + @apply flex + flex-wrap + items-center; +} + +.small { + @apply xs:-space-x-2 + space-x-0.5; +} + +.medium { + @apply -space-x-2.5; } diff --git a/apps/site/components/Common/AvatarGroup/index.tsx b/apps/site/components/Common/AvatarGroup/index.tsx index 87f8765f62a65..709c45affe461 100644 --- a/apps/site/components/Common/AvatarGroup/index.tsx +++ b/apps/site/components/Common/AvatarGroup/index.tsx @@ -35,7 +35,7 @@ const AvatarGroup: FC = ({ ); return ( -
+
{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 @@ nodejs.org scorecard badge - - -

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. Mascotte de Node.js 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. + Node.js mascot - - - Logo Gelap Horizontal Node.js® - - - - Logo Terang Horizontal Node.js® - - + + + + Logo Gelap Horizontal Node.js® + + + + Logo Terang Horizontal Node.js® + + + + ### Logo Bertumpuk Node.js® - - - - - - - - - - - + + + + + + + + + + + + + + +
- Logo Gelap Bertumpuk Node.js® - - Logo Terang Bertumpuk Node.js® -
- Logo Bertumpuk Hitam Node.js - - Logo Bertumpuk Putih Node.js -
+ Logo Gelap Bertumpuk Node.js® + + Logo Terang Bertumpuk Node.js® +
+ Logo Bertumpuk Hitam Node.js + + Logo Bertumpuk Putih Node.js +
### JS Icons - - - - - + + + + + + + +
- JS Icons Green - - Ikon JS Putih -
+ JS Icons Green + + Ikon JS Putih +
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 -![Releases](https://raw.githubusercontent.com/nodejs/Release/main/schedule.svg?sanitize=true) +![Releases](https://dimensi-dp.org/images/schedule.svg) 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® 수평 로고 + + + + + + + + + + +
+ Node.js 어두운 수평 로고 + + Node.js 밝은 수평 로고 +
+ +### Node.js® 세로 로고 + + + + + + + + + + + + + + + + + +
+ Node.js 어두운 세로 로고 + + Node.js 밝은 세로 로고 +
+ Node.js 검은색 세로 로고 + + Node.js 흰색 세로 로고 +
+ +### JS 아이콘 + + + + + + + + + + +
+ 녹색 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_ 릴리스만 사용해야 합니다. + +## 릴리스 일정 + +![릴리스 일정](https://raw.githubusercontent.com/nodejs/Release/main/schedule.svg?sanitize=true) + +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 모범 사례 + + + 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 ---
- - -
-

어디서든 JavaScript를 실행하세요!!

- - Node.js®는 무료, 오픈소스, 크로스플랫폼 JavaSript 런타임 환경으로 개발자 여러분이 서버, - 웹 앱, 커맨드 작성 도구와 스크립트를 만들도록 해줍니다. - -
- -
- - {({ 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 - - - Темний горизонтальний логотип Node.js - - - - Світлий горизонтальний логотип Node.js - - + + + + Темний горизонтальний логотип Node.js + + + + Світлий горизонтальний логотип Node.js + + + + ### Складений логотип Node.js® - - - - - - - - - - - + + + + + + + + + + + + + + +
- Темний складений логотип Node.js® - - Світлий складений логотип Node.js® -
- Чорний складений логотип Node.js® - - Білий складений логотип Node.js® -
+ Темний складений логотип Node.js® + + Світлий складений логотип Node.js® +
+ Чорний складений логотип Node.js® + + Білий складений логотип Node.js® +
### Значки JS - - - - - + + + + + + + +
- Зелений значок JS - - Білий значок JS -
+ Зелений значок 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 також можна встановити через менеджери пакетів. - )} - - -
+ + )} +
+ + + {({ 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/packages/i18n/config.json b/packages/i18n/config.json index 88f551e5e1982..f76eb20fb6eee 100644 --- a/packages/i18n/config.json +++ b/packages/i18n/config.json @@ -156,7 +156,7 @@ "langDir": "ltr", "dateFormat": "YYYY.MM.DD", "hrefLang": "ko", - "enabled": false, + "enabled": true, "default": false }, { diff --git a/packages/i18n/locales/fr.json b/packages/i18n/locales/fr.json index 0c92090a25825..c12704b805cb8 100644 --- a/packages/i18n/locales/fr.json +++ b/packages/i18n/locales/fr.json @@ -5,6 +5,7 @@ "links": { "trademarkPolicy": "Politique de Marque", "privacyPolicy": "Politique de confidentialité", + "versionSupport": "Support de la version", "codeOfConduct": "Code de conduite", "security": "Politique de sécurité" } @@ -18,7 +19,8 @@ "learn": "Apprendre", "security": "Sécurité", "certification": "Certification", - "blog": "Blog" + "blog": "Blog", + "contribute": "Contribuer" } } }, @@ -189,11 +191,6 @@ "label": "Basculer en mode sombre" } }, - "mdx": { - "upcomingEvents": { - "defaultTitle": "Aucun événement à venir" - } - }, "metabar": { "lastUpdated": "Dernière Mise à jour", "readingTime": "Temps de Lecture", @@ -299,6 +296,7 @@ "platform": "Plateforme" }, "codeBox": { + "unsupportedVersionWarning": "Cette version n'est plus maintenue. Plus d'informations ici :", "fnmEnvSetup": "configurer l'environnement fnm", "systemManagerWarning": "n'est pas un gestionnaire de paquets Node.js. Veuillez vous assurer que {packageManager} est déjà installé.", "communityWarning": "Les gestionnaires de paquets et leurs scripts d'installation ne sont pas maintenus par le projet Node.js.", diff --git a/packages/i18n/locales/id.json b/packages/i18n/locales/id.json index b2ef1d59ef7a2..811ffcdb7855f 100644 --- a/packages/i18n/locales/id.json +++ b/packages/i18n/locales/id.json @@ -5,6 +5,7 @@ "links": { "trademarkPolicy": "Kebijakan Merek Dagang", "privacyPolicy": "Kebijakan Privasi", + "versionSupport": "Dukungan Versi", "codeOfConduct": "Pedoman Perilaku", "security": "Kebijakan Keamanan" } @@ -18,7 +19,8 @@ "learn": "Pelajari", "security": "Keamanan", "certification": "Sertifikasi", - "blog": "Artikel" + "blog": "Artikel", + "contribute": "Kontribusi" } } }, @@ -35,13 +37,21 @@ "anIntroductionToTheNpmPackageManager": "Perkenalan package manager npm", "ecmascript2015Es6AndBeyond": "ECMAScript 2015 (ES6) dan seterusnya", "nodejsTheDifferenceBetweenDevelopmentAndProduction": "Node.js, perbedaan antara development dan production", - "nodejsWithTypescript": "Node.js dengan TypeScript", "nodejsWithWebassembly": "Node.js dengan WebAssembly", "debugging": "Men-debug Node.js", "profiling": "Profilisasi Aplikasi Node.js", "securityBestPractices": "Praktik Keamanan Terbaik" } }, + "typescript": { + "links": { + "typescript": "TypeScript", + "introduction": "Pengantar TypeScript", + "transpile": "Menjalankan kode TypeScript menggunakan transpilasi", + "run": "Menjalankan TypeScript dengan runner", + "runNatively": "Menjalankan TypeScript Secara Native" + } + }, "asynchronousWork": { "links": { "asynchronousWork": "Pekerjaan Asinkron", @@ -101,7 +111,8 @@ "links": { "testRunner": "Test Runner", "introduction": "Jelajahi Node.js test runner", - "usingTestRunner": "Menggunakan Node.js's test runner" + "usingTestRunner": "Menggunakan Node.js's test runner", + "mocking": "Mengejek dalam pengujian" } } }, @@ -180,11 +191,6 @@ "label": "Aktifkan Mode Gelap" } }, - "mdx": { - "upcomingEvents": { - "defaultTitle": "Tidak ada Event Mendatang" - } - }, "metabar": { "lastUpdated": "Pembaruan Terakhir", "readingTime": "Waktu Membaca", @@ -290,6 +296,7 @@ "platform": "Platform" }, "codeBox": { + "unsupportedVersionWarning": "Versi ini sudah tidak dalam tahap pemeliharaan. Temukan informasi selengkapnya di sini:", "fnmEnvSetup": "konfigurasikan lingkungan fnm", "systemManagerWarning": "bukan manajer paket Node.js. Pastikan Anda sudah menginstal {packageManager}.", "communityWarning": "Package manager dan skrip instalasi tidak di kelola oleh Node.js.", diff --git a/packages/i18n/locales/ko.json b/packages/i18n/locales/ko.json new file mode 100644 index 0000000000000..6b24efa221df4 --- /dev/null +++ b/packages/i18n/locales/ko.json @@ -0,0 +1,327 @@ +{ + "components": { + "containers": { + "footer": { + "links": { + "trademarkPolicy": "상표 정책", + "privacyPolicy": "개인정보 처리방침", + "versionSupport": "버전 지원", + "codeOfConduct": "행동 강령", + "security": "보안 정책" + } + }, + "navBar": { + "links": { + "about": "소개", + "download": "다운로드", + "docs": "문서", + "guides": "가이드", + "learn": "학습", + "security": "보안", + "certification": "인증", + "blog": "블로그", + "contribute": "기여하기" + } + } + }, + "navigation": { + "learn": { + "gettingStarted": { + "links": { + "gettingStarted": "시작하기", + "introductionToNodejs": "Node.js 소개", + "howToInstallNodejs": "Node.js 설치 방법", + "howMuchJavascriptDoYouNeedToKnowToUseNodejs": "Node.js를 사용하기 위해 얼마나 많은 JavaScript를 알아야 할까요?", + "differencesBetweenNodejsAndTheBrowser": "Node.js와 브라우저 간의 차이", + "theV8JavascriptEngine": "V8 JavaScript 엔진", + "anIntroductionToTheNpmPackageManager": "npm 패키지 관리자 소개", + "ecmascript2015Es6AndBeyond": "ECMAScript 2015 (ES6) 및 이후", + "nodejsTheDifferenceBetweenDevelopmentAndProduction": "Node.js, 개발과 프로덕션의 차이", + "nodejsWithWebassembly": "Node.js와 WebAssembly", + "debugging": "Node.js 디버깅", + "profiling": "Node.js 애플리케이션 프로파일링", + "securityBestPractices": "보안 모범 사례" + } + }, + "typescript": { + "links": { + "typescript": "TypeScript", + "introduction": "TypeScript 소개", + "transpile": "트랜스파일을 통한 TypeScript 코드 실행하기", + "run": "러너로 TypeScript 실행하기", + "runNatively": "네이티브에서 TypeScript 실행하기" + } + }, + "asynchronousWork": { + "links": { + "asynchronousWork": "비동기 작업", + "asynchronousFlowControl": "비동기 흐름 제어", + "overviewOfBlockingVsNonBlocking": "블로킹과 논블로킹 개요", + "javascriptAsynchronousProgrammingAndCallbacks": "JavaScript 비동기 프로그래밍 및 콜백", + "discoverJavascriptTimers": "JavaScript 타이머 알아보기", + "eventLoopTimersAndNexttick": "Node.js 이벤트 루프", + "theNodejsEventEmitter": "Node.js 이벤트 처리기", + "understandingProcessnexttick": "process.nextTick() 이해하기", + "understandingSetimmediate": "setImmediate() 이해하기", + "dontBlockTheEventLoop": "이벤트 루프를 차단하지 마세요" + } + }, + "manipulatingFiles": { + "links": { + "manipulatingFiles": "파일 조작하기", + "nodejsFileStats": "Node.js 파일 상태", + "nodejsFilePaths": "Node.js 파일 경로", + "workingWithFileDescriptorsInNodejs": "Node.js에서 파일 디스크립터 사용하기", + "readingFilesWithNodejs": "Node.js로 파일 읽기", + "writingFilesWithNodejs": "Node.js로 파일 쓰기", + "workingWithFoldersInNodejs": "Node.js에서 폴더 작업하기", + "workingWithDifferentFilesystems": "다양한 파일 시스템으로 작업하는 방법" + } + }, + "commandLine": { + "links": { + "commandLine": "명령 줄", + "runNodejsScriptsFromTheCommandLine": "명령 줄에서 Node.js 스크립트 실행하기", + "howToReadEnvironmentVariablesFromNodejs": "Node.js에서 환경 변수 읽기", + "howToUseTheNodejsRepl": "Node.js REPL 사용법", + "outputToTheCommandLineUsingNodejs": "Node.js로 명령 줄에 출력하기", + "acceptInputFromTheCommandLineInNodejs": "Node.js에서 명령 줄 입력 받기" + } + }, + "modules": { + "links": { + "modules": "모듈", + "publishingNodeApiModules": "Node-API 패키지 배포하기", + "anatomyOfAnHttpTransaction": "HTTP 트랜잭션의 구조", + "abiStability": "ABI 안정성", + "backpressuringInStreams": "스트림의 배압(Backpressure)" + } + }, + "diagnostics": { + "links": { + "diagnostics": "진단", + "userJourney": "사용자 여정", + "memory": "메모리", + "liveDebugging": "실시간 디버깅", + "poorPerformance": "성능 저하", + "flameGraphs": "프레임 그래프" + } + }, + "testRunner": { + "links": { + "testRunner": "테스트 러너", + "introduction": "Node.js 테스트 러너 알아보기", + "usingTestRunner": "Node.js의 테스트 러너 사용하기", + "mocking": "테스트에서 모킹하기" + } + } + }, + "about": { + "links": { + "about": "Node.js 소개", + "aboutSide": "Node.js®에 대하여", + "branding": "Node.js 브랜딩", + "governance": "프로젝트 거버넌스", + "releases": "Node.js 릴리스", + "security": "보안 보고" + } + }, + "getInvolved": { + "links": { + "getInvolved": "참여하기", + "collabSummit": "협업 정상 회담", + "upcomingEvents": "예정된 이벤트", + "contribute": "Node.js에 기여하기", + "codeOfConduct": "행동 강령" + } + } + }, + "downloadList": { + "links": { + "previousReleases": "Node.js 릴리스", + "packageManager": "패키지 관리자를 통한 Node.js 설치", + "shaSums": { + "title": "릴리스 파일의 서명된 SHASUMS", + "howToVerify": " (검증 방법)" + }, + "allDownloads": "모든 다운로드 옵션", + "nightlyReleases": "야간 빌드(Nightly builds)", + "unofficialBuilds": "비공식 빌드", + "buildingFromSource": "지원되는 플랫폼에서 소스에서 Node.js 빌드하기", + "installingOnLinux": "이진 아카이브를 통해 Node.js 설치하기", + "installingOnWsl": "Windows Subsystem for Linux (WSL) 에 설치하기" + } + }, + "downloadReleasesTable": { + "changelog": "변경 로그", + "releases": "릴리스", + "docs": "문서" + }, + "pagination": { + "next": "다음", + "previous": "이전" + }, + "common": { + "breadcrumbs": { + "navigateToHome": "홈으로 이동" + }, + "crossLink": { + "previous": "이전", + "next": "다음" + }, + "codebox": { + "copy": "클립보드에 복사", + "copied": "클립보드에 복사됨!" + }, + "pagination": { + "prev": "이전", + "prevAriaLabel": "이전 페이지", + "next": "다음", + "nextAriaLabel": "다음 페이지", + "defaultLabel": "페이지네이션", + "pageLabel": "{pageNumber} 페이지로 이동" + }, + "sidebar": { + "title": "페이지 변경" + }, + "languageDropdown": { + "label": "언어 선택" + }, + "themeToggle": { + "label": "다크 모드 전환" + } + }, + "metabar": { + "lastUpdated": "마지막 업데이트", + "readingTime": "읽는 데 걸리는 시간", + "addedIn": "추가됨", + "author": "저자", + "authors": "저자들", + "contribute": "기여하기", + "contributeText": "이 페이지 수정", + "viewAs": "보기", + "tableOfContents": "목차" + }, + "downloads": { + "changelogModal": { + "startContributing": "기여 시작하기" + } + }, + "search": { + "searchBox": { + "placeholder": "검색어를 입력하세요..." + }, + "seeAll": { + "text": "{count} 개 결과 모두 보기" + }, + "searchError": { + "text": "검색 중 오류가 발생했습니다. 나중에 다시 시도해 주세요." + }, + "poweredBy": { + "text": "제공" + }, + "noResults": { + "text": "\"{query}\"에 대한 결과를 찾을 수 없습니다." + }, + "emptyState": { + "text": "검색어를 입력하세요..." + }, + "searchPage": { + "title": "검색 중: {query}" + } + }, + "blog": { + "blogHeader": { + "subtitle": "최신 Node.js 뉴스, 사례 연구, 튜토리얼 및 자료입니다.", + "rssLink": "RSS 피드" + } + } + }, + "layouts": { + "blogPost": { + "author": { + "byLine": "{author, select, null {} other {작성자: {author}, }}" + } + }, + "blogIndex": { + "categoryName": "{category, select, all {블로그} other {{category} 블로그 게시물}}" + }, + "blog": { + "title": "블로그", + "selectCategory": "카테고리", + "categories": { + "all": "모두", + "announcements": "공지사항", + "release": "릴리스", + "vulnerability": "취약점", + "advisory-board": "자문 위원회", + "community": "커뮤니티", + "feature": "기능", + "module": "모듈", + "npm": "npm", + "uncategorized": "분류되지 않음", + "video": "비디오", + "weekly": "주간 업데이트", + "wg": "워킹 그룹", + "events": "이벤트" + } + }, + "error": { + "notFound": { + "title": "페이지를 찾을 수 없습니다", + "description": "죄송합니다. 찾고 있는 페이지를 찾을 수 없습니다! 홈페이지에서 다시 시작해 보세요." + }, + "internalServerError": { + "title": "Internal Server Error", + "description": "이 페이지에서 복구할 수 없는 오류가 발생했습니다." + }, + "backToHome": "홈으로 돌아가기" + }, + "download": { + "selectCategory": "카테고리", + "categories": { + "prebuilt-installer": "사전 빌드된 설치 프로그램", + "prebuilt-binaries": "사전 빌드된 바이너리", + "package-manager": "패키지 관리자", + "source-code": "소스 코드" + }, + "buttons": { + "prebuilt": "Node.js {version} 다운로드", + "source": "Node.js {version} 소스 다운로드" + }, + "dropdown": { + "bitness": "비트", + "os": "운영 체제", + "version": "버전", + "platform": "플랫폼" + }, + "codeBox": { + "unsupportedVersionWarning": "이 버전은 더 이상 유지 관리되지 않습니다. 자세한 내용은 여기에서 확인하세요:", + "fnmEnvSetup": "fnm 환경 구성", + "systemManagerWarning": "{packageManager}가 Node.js 패키지 관리자가 아닙니다. 이미 설치되어 있는지 확인하세요.", + "communityWarning": "패키지 관리자 및 설치 스크립트는 Node.js 프로젝트에서 유지 관리되지 않습니다.", + "communityWarningReport": "문제가 발생하면 패키지 관리자의 유지 관리자에게 문의하세요.", + "installsNvm": "nvm (Node Version Manager) 을 설치합니다.", + "downloadAndInstallNodejsRestartTerminal": "Node.js를 다운로드하고 설치합니다 (터미널을 다시 시작해야 할 수 있습니다)", + "verifiesRightNodejsVersion": "환경에 올바른 Node.js 버전이 있는지 확인합니다.", + "verifiesRightNpmVersion": "환경에 올바른 npm 버전이 있는지 확인합니다.", + "shouldPrint": "`{version}`이 출력되어야 합니다.", + "installsFnm": "fnm (Fast Node Manager) 을 설치합니다.", + "downloadAndInstallNodejs": "Node.js를 다운로드하고 설치합니다.", + "activateFNM": "fnm을 활성화합니다.", + "noteWithColon": "참고:", + "dockerIsNotNodejsPackageManager": "Docker는 Node.js 패키지 관리자가 아닙니다.", + "PleaseEndureAlreadyInstallOnSystem": "시스템에 이미 설치되어 있는지 확인하세요.", + "dockerInstructions": "https://docs.docker.com/desktop/의 공식 지침을 따르세요.", + "dockerImagesLink": "Docker 이미지는 https://github.com/nodejs/docker-node/에서 공식적으로 제공됩니다.", + "pullsNodejsDockerImage": "Node.js Docker 이미지를 가져옵니다.", + "homebrewIsNotNodejsPackageManager": "Homebrew는 Node.js 패키지 관리자가 아닙니다.", + "homebrewInstructions": "https://brew.sh/의 공식 지침을 따르세요.", + "homebrewSupportsIntallingMajorNodejsVersion": "Homebrew는 주요 Node.js 버전 설치만 지원하며 {version} 릴리즈 라인의 최신 Node.js 버전을 지원하지 않을 수 있습니다.", + "chocolateyIsNotNodejsPackageManager": "Chocolatey는 Node.js 패키지 관리자가 아닙니다.", + "chocolateyInstructions": "https://chocolatey.org/의 공식 지침을 따르세요.", + "chocolateyNotMaintanedByNodejs": "Chocolatey는 Node.js 프로젝트에 의해 공식적으로 유지 관리되지 않으며 {version} 버전의 Node.js를 지원하지 않을 수 있습니다." + } + } + } +} diff --git a/packages/i18n/locales/uk.json b/packages/i18n/locales/uk.json index 14718639533fa..355791b51f6b1 100644 --- a/packages/i18n/locales/uk.json +++ b/packages/i18n/locales/uk.json @@ -5,6 +5,7 @@ "links": { "trademarkPolicy": "Політика торгових марок", "privacyPolicy": "Політика конфіденційності", + "versionSupport": "Підтримка версії", "codeOfConduct": "Кодекс поведінки", "security": "Політика безпеки" } @@ -18,7 +19,8 @@ "learn": "Навчання", "security": "Безпека", "certification": "Сертифікація", - "blog": "Блог" + "blog": "Блог", + "contribute": "Долучитися" } } }, @@ -109,7 +111,8 @@ "links": { "testRunner": "Виконавець тестів", "introduction": "Що таке виконавець тестів у Node.js?", - "usingTestRunner": "Використання виконавця тестів у Node.js" + "usingTestRunner": "Використання виконавця тестів у Node.js", + "mocking": "Мокінг у тестах" } } }, @@ -188,11 +191,6 @@ "label": "Перемкнути темний режим" } }, - "mdx": { - "upcomingEvents": { - "defaultTitle": "Немає майбутніх подій" - } - }, "metabar": { "lastUpdated": "Востаннє оновлено", "readingTime": "Час на читання", @@ -298,6 +296,7 @@ "platform": "Платформа" }, "codeBox": { + "unsupportedVersionWarning": "Ця версія більше не обслуговується. Дізнайтеся більше тут:", "fnmEnvSetup": "налаштовує середовище fnm", "systemManagerWarning": "не є менеджером пакетів Node.js. Переконайтеся, що у вас уже встановлено {packageManager}.", "communityWarning": "Менеджери пакетів та їхні скрипти встановлення не обслуговуються проєктом Node.js.", From 861b8d7e77442800499b191ff1e6d86a39a1fb24 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Tue, 10 Dec 2024 17:01:11 +0100 Subject: [PATCH 53/65] Blog: v23.4.0 release post (#7325) Refs: https://github.com/nodejs/node/pull/56119 --- apps/site/pages/en/blog/release/v23.4.0.md | 265 +++++++++++++++++++++ 1 file changed, 265 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v23.4.0.md diff --git a/apps/site/pages/en/blog/release/v23.4.0.md b/apps/site/pages/en/blog/release/v23.4.0.md new file mode 100644 index 0000000000000..a63cfcf658b35 --- /dev/null +++ b/apps/site/pages/en/blog/release/v23.4.0.md @@ -0,0 +1,265 @@ +--- +date: '2024-12-10T15:49:57.080Z' +category: release +title: Node v23.4.0 (Current) +layout: blog-post +author: Antoine du Hamel +--- + +## 2024-12-10, Version 23.4.0 (Current), @aduh95 prepared by @targos + +### Notable Changes + +#### Introducing experimental `assert.partialDeepStrictEqual` + +Sometimes, when writing test, we want to validate that some specific properties +are present, and the mere presence of additional keys are not exactly relevant +for that specific test. For this use case, we can now use +`assert.partialDeepStrictEqual`, which should be familiar to those already using +`assert.deepStrictEqual`, with the main difference that it does not require all +properties in the `actual` parameter to be present in the `expected` parameter. + +Here are a few examples of usage: + +```js +assert.partialDeepStrictEqual({ a: 1, b: 2, c: 3 }, { a: 1, b: 2 }); + +assert.partialDeepStrictEqual([1, 2, 3, 4], [2, 3]); + +assert.partialDeepStrictEqual( + { a: { b: { c: 1, d: 2 } }, e: 3 }, + { a: { b: { c: 1 } } } +); + +assert.partialDeepStrictEqual( + { a: { b: { c: 1, d: 2 } }, e: 3 }, + { a: { b: { c: 1 } } } +); + +assert.partialDeepStrictEqual( + new Set([{ a: 1 }, { b: 1 }]), + new Set([{ a: 1 }]) +); + +assert.partialDeepStrictEqual( + { a: new Set([{ a: 1 }, { b: 1 }]), b: new Map(), c: [1, 2, 3] }, + { a: new Set([{ a: 1 }]), c: [2] } +); +``` + +Contributed by Giovanni Bucci in [#54630](https://github.com/nodejs/node/pull/54630). + +#### Implement `--trace-env` and `--trace-env-[js|native]-stack` + +This release introduces `--trace-env`, `--trace-env-js-stack` and `--trace-env-native-stack` +CLI options that print information about any access to environment variables done in the current +Node.js instance to stderr. Currently in the logs, only the names of the environment variables +being accessed are printed, while the values are not printed to avoid leaking sensitive +information. To print the stack trace of the access, use `--trace-env-js-stack` and/or +`--trace-env-native-stack`. + +Contributed by Joyee Cheung in [#55604](https://github.com/nodejs/node/pull/55604). + +#### Other notable changes + +- \[[`59d6891872`](https://github.com/nodejs/node/commit/59d6891872)] - **doc**: add LJHarb to collaborators (Jordan Harband) [#56132](https://github.com/nodejs/node/pull/56132) +- \[[`565b04a7be`](https://github.com/nodejs/node/commit/565b04a7be)] - **(SEMVER-MINOR)** **net**: add `BlockList.isBlockList(value)` (James M Snell) [#56078](https://github.com/nodejs/node/pull/56078) +- \[[`c9698ed6a4`](https://github.com/nodejs/node/commit/c9698ed6a4)] - **(SEMVER-MINOR)** **net**: support `blockList` in `net.connect` (theanarkh) [#56075](https://github.com/nodejs/node/pull/56075) +- \[[`30d604180d`](https://github.com/nodejs/node/commit/30d604180d)] - **(SEMVER-MINOR)** **net**: support `blockList` in `net.Server` (theanarkh) [#56079](https://github.com/nodejs/node/pull/56079) +- \[[`9fba5e1df1`](https://github.com/nodejs/node/commit/9fba5e1df1)] - **(SEMVER-MINOR)** **net**: add `SocketAddress.parse` (James M Snell) [#56076](https://github.com/nodejs/node/pull/56076) +- \[[`4cdb03201e`](https://github.com/nodejs/node/commit/4cdb03201e)] - **(SEMVER-MINOR)** **process**: deprecate `features.{ipv6,uv}` and `features.tls_*` (René) [#55545](https://github.com/nodejs/node/pull/55545) +- \[[`efb9f05f59`](https://github.com/nodejs/node/commit/efb9f05f59)] - **(SEMVER-MINOR)** **sqlite**: unflag `node:sqlite` module (Colin Ihrig) [#55890](https://github.com/nodejs/node/pull/55890) +- \[[`d777d4a52d`](https://github.com/nodejs/node/commit/d777d4a52d)] - **(SEMVER-MINOR)** **sqlite**: add `StatementSync.prototype.iterate` method (tpoisseau) [#54213](https://github.com/nodejs/node/pull/54213) + +### Commits + +- \[[`5b0ce376a2`](https://github.com/nodejs/node/commit/5b0ce376a2)] - **assert**: optimize partial comparison of two `Set`s (Antoine du Hamel) [#55970](https://github.com/nodejs/node/pull/55970) +- \[[`a4f57f0293`](https://github.com/nodejs/node/commit/a4f57f0293)] - **(SEMVER-MINOR)** **assert**: add partialDeepStrictEqual (Giovanni Bucci) [#54630](https://github.com/nodejs/node/pull/54630) +- \[[`1b81a7d003`](https://github.com/nodejs/node/commit/1b81a7d003)] - **build**: allow overriding clang usage (Shelley Vohr) [#56016](https://github.com/nodejs/node/pull/56016) +- \[[`39c901307f`](https://github.com/nodejs/node/commit/39c901307f)] - **build**: remove defaults for create-release-proposal (Rafael Gonzaga) [#56042](https://github.com/nodejs/node/pull/56042) +- \[[`7133c0459f`](https://github.com/nodejs/node/commit/7133c0459f)] - **build**: avoid compiling with VS v17.12 (Stefan Stojanovic) [#55930](https://github.com/nodejs/node/pull/55930) +- \[[`ce53f1689f`](https://github.com/nodejs/node/commit/ce53f1689f)] - **build**: set node_arch to target_cpu in GN (Shelley Vohr) [#55967](https://github.com/nodejs/node/pull/55967) +- \[[`2023b09d27`](https://github.com/nodejs/node/commit/2023b09d27)] - **build**: add create release proposal action (Rafael Gonzaga) [#55690](https://github.com/nodejs/node/pull/55690) +- \[[`26ec99634c`](https://github.com/nodejs/node/commit/26ec99634c)] - **build**: use variable for crypto dep path (Shelley Vohr) [#55928](https://github.com/nodejs/node/pull/55928) +- \[[`f48e289580`](https://github.com/nodejs/node/commit/f48e289580)] - **build**: fix GN build for sqlite (Cheng) [#55912](https://github.com/nodejs/node/pull/55912) +- \[[`fffabca6b8`](https://github.com/nodejs/node/commit/fffabca6b8)] - **build**: compile bundled simdutf conditionally (Jakub Jirutka) [#55886](https://github.com/nodejs/node/pull/55886) +- \[[`d8eb83c5c5`](https://github.com/nodejs/node/commit/d8eb83c5c5)] - **build**: compile bundled simdjson conditionally (Jakub Jirutka) [#55886](https://github.com/nodejs/node/pull/55886) +- \[[`83e02dc482`](https://github.com/nodejs/node/commit/83e02dc482)] - **build**: compile bundled ada conditionally (Jakub Jirutka) [#55886](https://github.com/nodejs/node/pull/55886) +- \[[`816d37a187`](https://github.com/nodejs/node/commit/816d37a187)] - **(SEMVER-MINOR)** **cli**: implement --trace-env and --trace-env-\[js|native]-stack (Joyee Cheung) [#55604](https://github.com/nodejs/node/pull/55604) +- \[[`53c0f2f186`](https://github.com/nodejs/node/commit/53c0f2f186)] - **crypto**: ensure CryptoKey usages and algorithm are cached objects (Filip Skokan) [#56108](https://github.com/nodejs/node/pull/56108) +- \[[`93d36bf1c8`](https://github.com/nodejs/node/commit/93d36bf1c8)] - **crypto**: allow non-multiple of 8 in SubtleCrypto.deriveBits (Filip Skokan) [#55296](https://github.com/nodejs/node/pull/55296) +- \[[`8680b8030c`](https://github.com/nodejs/node/commit/8680b8030c)] - **deps**: update ngtcp2 to 1.9.1 (Node.js GitHub Bot) [#56095](https://github.com/nodejs/node/pull/56095) +- \[[`78a2a6ca1e`](https://github.com/nodejs/node/commit/78a2a6ca1e)] - **deps**: upgrade npm to 10.9.2 (npm team) [#56135](https://github.com/nodejs/node/pull/56135) +- \[[`52dfe5af4b`](https://github.com/nodejs/node/commit/52dfe5af4b)] - **deps**: update sqlite to 3.47.1 (Node.js GitHub Bot) [#56094](https://github.com/nodejs/node/pull/56094) +- \[[`3852b5c8d1`](https://github.com/nodejs/node/commit/3852b5c8d1)] - **deps**: update zlib to 1.3.0.1-motley-82a5fec (Node.js GitHub Bot) [#55980](https://github.com/nodejs/node/pull/55980) +- \[[`f99f95f62f`](https://github.com/nodejs/node/commit/f99f95f62f)] - **deps**: update corepack to 0.30.0 (Node.js GitHub Bot) [#55977](https://github.com/nodejs/node/pull/55977) +- \[[`96e846de89`](https://github.com/nodejs/node/commit/96e846de89)] - **deps**: update ngtcp2 to 1.9.0 (Node.js GitHub Bot) [#55975](https://github.com/nodejs/node/pull/55975) +- \[[`d180a8aedb`](https://github.com/nodejs/node/commit/d180a8aedb)] - **deps**: update simdutf to 5.6.3 (Node.js GitHub Bot) [#55973](https://github.com/nodejs/node/pull/55973) +- \[[`288416a764`](https://github.com/nodejs/node/commit/288416a764)] - **deps**: upgrade npm to 10.9.1 (npm team) [#55951](https://github.com/nodejs/node/pull/55951) +- \[[`cf3f7ac512`](https://github.com/nodejs/node/commit/cf3f7ac512)] - **deps**: update zlib to 1.3.0.1-motley-7e2e4d7 (Node.js GitHub Bot) [#54432](https://github.com/nodejs/node/pull/54432) +- \[[`7768b3d054`](https://github.com/nodejs/node/commit/7768b3d054)] - **deps**: update simdjson to 3.10.1 (Node.js GitHub Bot) [#54678](https://github.com/nodejs/node/pull/54678) +- \[[`9c6103833b`](https://github.com/nodejs/node/commit/9c6103833b)] - **deps**: update simdutf to 5.6.2 (Node.js GitHub Bot) [#55889](https://github.com/nodejs/node/pull/55889) +- \[[`7b133d6220`](https://github.com/nodejs/node/commit/7b133d6220)] - **dgram**: check udp buffer size to avoid fd leak (theanarkh) [#56084](https://github.com/nodejs/node/pull/56084) +- \[[`e4529b8179`](https://github.com/nodejs/node/commit/e4529b8179)] - **doc**: add report version and history section (Chengzhong Wu) [#56130](https://github.com/nodejs/node/pull/56130) +- \[[`718625a03a`](https://github.com/nodejs/node/commit/718625a03a)] - **doc**: mention `-a` flag for the release script (Ruy Adorno) [#56124](https://github.com/nodejs/node/pull/56124) +- \[[`59d6891872`](https://github.com/nodejs/node/commit/59d6891872)] - **doc**: add LJHarb to collaborators (Jordan Harband) [#56132](https://github.com/nodejs/node/pull/56132) +- \[[`d7ed32404a`](https://github.com/nodejs/node/commit/d7ed32404a)] - **doc**: add create-release-action to process (Rafael Gonzaga) [#55993](https://github.com/nodejs/node/pull/55993) +- \[[`3b4ef93371`](https://github.com/nodejs/node/commit/3b4ef93371)] - **doc**: rename file to advocacy-ambassador-program.md (Tobias Nießen) [#56046](https://github.com/nodejs/node/pull/56046) +- \[[`59e4087d5e`](https://github.com/nodejs/node/commit/59e4087d5e)] - **doc**: add added tag and fix typo sqlite.md (Bart Louwers) [#56012](https://github.com/nodejs/node/pull/56012) +- \[[`a1b26608ae`](https://github.com/nodejs/node/commit/a1b26608ae)] - **doc**: remove unused import from sample code (Blended Bram) [#55570](https://github.com/nodejs/node/pull/55570) +- \[[`498f44ad73`](https://github.com/nodejs/node/commit/498f44ad73)] - **doc**: add FAQ to releases section (Rafael Gonzaga) [#55992](https://github.com/nodejs/node/pull/55992) +- \[[`d48348afaa`](https://github.com/nodejs/node/commit/d48348afaa)] - **doc**: move history entry to class description (Luigi Pinca) [#55991](https://github.com/nodejs/node/pull/55991) +- \[[`96926ce13c`](https://github.com/nodejs/node/commit/96926ce13c)] - **doc**: add history entry for textEncoder.encodeInto() (Luigi Pinca) [#55990](https://github.com/nodejs/node/pull/55990) +- \[[`e92d51d511`](https://github.com/nodejs/node/commit/e92d51d511)] - **doc**: improve GN build documentation a bit (Shelley Vohr) [#55968](https://github.com/nodejs/node/pull/55968) +- \[[`6be3824d6f`](https://github.com/nodejs/node/commit/6be3824d6f)] - **doc**: fix deprecation codes (Filip Skokan) [#56018](https://github.com/nodejs/node/pull/56018) +- \[[`fa2b35d28d`](https://github.com/nodejs/node/commit/fa2b35d28d)] - **doc**: remove confusing and outdated sentence (Luigi Pinca) [#55988](https://github.com/nodejs/node/pull/55988) +- \[[`baed2763df`](https://github.com/nodejs/node/commit/baed2763df)] - **doc**: deprecate passing invalid types in `fs.existsSync` (Carlos Espa) [#55892](https://github.com/nodejs/node/pull/55892) +- \[[`a3f7db6b6d`](https://github.com/nodejs/node/commit/a3f7db6b6d)] - **doc**: add doc for PerformanceObserver.takeRecords() (skyclouds2001) [#55786](https://github.com/nodejs/node/pull/55786) +- \[[`770572423b`](https://github.com/nodejs/node/commit/770572423b)] - **doc**: add vetted courses to the ambassador benefits (Matteo Collina) [#55934](https://github.com/nodejs/node/pull/55934) +- \[[`98f8f4a8a9`](https://github.com/nodejs/node/commit/98f8f4a8a9)] - **doc**: order `node:crypto` APIs alphabetically (Julian Gassner) [#55831](https://github.com/nodejs/node/pull/55831) +- \[[`1e0decb44c`](https://github.com/nodejs/node/commit/1e0decb44c)] - **doc**: doc how to add message for promotion (Michael Dawson) [#55843](https://github.com/nodejs/node/pull/55843) +- \[[`ff48c29724`](https://github.com/nodejs/node/commit/ff48c29724)] - **doc**: add esm example for zlib (Leonardo Peixoto) [#55946](https://github.com/nodejs/node/pull/55946) +- \[[`ccc5a6d552`](https://github.com/nodejs/node/commit/ccc5a6d552)] - **doc**: document approach for building wasm in deps (Michael Dawson) [#55940](https://github.com/nodejs/node/pull/55940) +- \[[`c8bb8a6ac5`](https://github.com/nodejs/node/commit/c8bb8a6ac5)] - **doc**: fix Node.js 23 column in CHANGELOG.md (Richard Lau) [#55935](https://github.com/nodejs/node/pull/55935) +- \[[`9d078802ad`](https://github.com/nodejs/node/commit/9d078802ad)] - **doc**: remove RedYetiDev from triagers team (Aviv Keller) [#55947](https://github.com/nodejs/node/pull/55947) +- \[[`5a2a757119`](https://github.com/nodejs/node/commit/5a2a757119)] - **doc**: add esm examples to node:timers (Alfredo González) [#55857](https://github.com/nodejs/node/pull/55857) +- \[[`f711a48e15`](https://github.com/nodejs/node/commit/f711a48e15)] - **doc**: fix relative path mention in --allow-fs (Rafael Gonzaga) [#55791](https://github.com/nodejs/node/pull/55791) +- \[[`219f5f2627`](https://github.com/nodejs/node/commit/219f5f2627)] - **doc**: include git node release --promote to steps (Rafael Gonzaga) [#55835](https://github.com/nodejs/node/pull/55835) +- \[[`f9d25ed3e4`](https://github.com/nodejs/node/commit/f9d25ed3e4)] - **doc**: add history entry for import assertion removal (Antoine du Hamel) [#55883](https://github.com/nodejs/node/pull/55883) +- \[[`efb9f05f59`](https://github.com/nodejs/node/commit/efb9f05f59)] - **(SEMVER-MINOR)** **doc,lib,src,test**: unflag sqlite module (Colin Ihrig) [#55890](https://github.com/nodejs/node/pull/55890) +- \[[`a37e5fe5f8`](https://github.com/nodejs/node/commit/a37e5fe5f8)] - **fs**: lazily load ReadFileContext (Gürgün Dayıoğlu) [#55998](https://github.com/nodejs/node/pull/55998) +- \[[`9289374248`](https://github.com/nodejs/node/commit/9289374248)] - **http2**: fix memory leak caused by premature listener removing (ywave620) [#55966](https://github.com/nodejs/node/pull/55966) +- \[[`49af1c33ac`](https://github.com/nodejs/node/commit/49af1c33ac)] - **lib**: add validation for options in compileFunction (Taejin Kim) [#56023](https://github.com/nodejs/node/pull/56023) +- \[[`8faf91846b`](https://github.com/nodejs/node/commit/8faf91846b)] - **lib**: fix `fs.readdir` recursive async (Rafael Gonzaga) [#56041](https://github.com/nodejs/node/pull/56041) +- \[[`a2382303d7`](https://github.com/nodejs/node/commit/a2382303d7)] - **lib**: refactor code to improve readability (Pietro Marchini) [#55995](https://github.com/nodejs/node/pull/55995) +- \[[`30f26ba254`](https://github.com/nodejs/node/commit/30f26ba254)] - **lib**: avoid excluding symlinks in recursive fs.readdir with filetypes (Juan José) [#55714](https://github.com/nodejs/node/pull/55714) +- \[[`9b272ae339`](https://github.com/nodejs/node/commit/9b272ae339)] - **meta**: bump github/codeql-action from 3.27.0 to 3.27.5 (dependabot\[bot]) [#56103](https://github.com/nodejs/node/pull/56103) +- \[[`fb0e6ca68b`](https://github.com/nodejs/node/commit/fb0e6ca68b)] - **meta**: bump actions/checkout from 4.1.7 to 4.2.2 (dependabot\[bot]) [#56102](https://github.com/nodejs/node/pull/56102) +- \[[`0ab611513c`](https://github.com/nodejs/node/commit/0ab611513c)] - **meta**: bump step-security/harden-runner from 2.10.1 to 2.10.2 (dependabot\[bot]) [#56101](https://github.com/nodejs/node/pull/56101) +- \[[`ff4839b8ab`](https://github.com/nodejs/node/commit/ff4839b8ab)] - **meta**: bump actions/setup-node from 4.0.3 to 4.1.0 (dependabot\[bot]) [#56100](https://github.com/nodejs/node/pull/56100) +- \[[`f262207356`](https://github.com/nodejs/node/commit/f262207356)] - **meta**: add releasers as CODEOWNERS to proposal action (Rafael Gonzaga) [#56043](https://github.com/nodejs/node/pull/56043) +- \[[`b6005b3fac`](https://github.com/nodejs/node/commit/b6005b3fac)] - **module**: mark evaluation rejection in require(esm) as handled (Joyee Cheung) [#56122](https://github.com/nodejs/node/pull/56122) +- \[[`b8ab5332a9`](https://github.com/nodejs/node/commit/b8ab5332a9)] - **module**: remove --experimental-default-type (Geoffrey Booth) [#56092](https://github.com/nodejs/node/pull/56092) +- \[[`4be5047030`](https://github.com/nodejs/node/commit/4be5047030)] - **module**: do not warn when require(esm) comes from node_modules (Joyee Cheung) [#55960](https://github.com/nodejs/node/pull/55960) +- \[[`c9698ed6a4`](https://github.com/nodejs/node/commit/c9698ed6a4)] - **(SEMVER-MINOR)** **net**: support blocklist in net.connect (theanarkh) [#56075](https://github.com/nodejs/node/pull/56075) +- \[[`9fba5e1df1`](https://github.com/nodejs/node/commit/9fba5e1df1)] - **(SEMVER-MINOR)** **net**: add SocketAddress.parse (James M Snell) [#56076](https://github.com/nodejs/node/pull/56076) +- \[[`565b04a7be`](https://github.com/nodejs/node/commit/565b04a7be)] - **(SEMVER-MINOR)** **net**: add net.BlockList.isBlockList(value) (James M Snell) [#56078](https://github.com/nodejs/node/pull/56078) +- \[[`30d604180d`](https://github.com/nodejs/node/commit/30d604180d)] - **(SEMVER-MINOR)** **net**: support blocklist for net.Server (theanarkh) [#56079](https://github.com/nodejs/node/pull/56079) +- \[[`4cdb03201e`](https://github.com/nodejs/node/commit/4cdb03201e)] - **(SEMVER-MINOR)** **process**: deprecate `features.{ipv6,uv}` and `features.tls_*` (René) [#55545](https://github.com/nodejs/node/pull/55545) +- \[[`d09e57b26d`](https://github.com/nodejs/node/commit/d09e57b26d)] - **quic**: update more QUIC implementation (James M Snell) [#55986](https://github.com/nodejs/node/pull/55986) +- \[[`1fb30d6e86`](https://github.com/nodejs/node/commit/1fb30d6e86)] - **quic**: multiple updates to quic impl (James M Snell) [#55971](https://github.com/nodejs/node/pull/55971) +- \[[`9e4f7aa808`](https://github.com/nodejs/node/commit/9e4f7aa808)] - **sqlite**: deps include `sqlite3ext.h` (Alex Yang) [#56010](https://github.com/nodejs/node/pull/56010) +- \[[`d777d4a52d`](https://github.com/nodejs/node/commit/d777d4a52d)] - **(SEMVER-MINOR)** **sqlite**: add `StatementSync.prototype.iterate` method (tpoisseau) [#54213](https://github.com/nodejs/node/pull/54213) +- \[[`66451bb9ba`](https://github.com/nodejs/node/commit/66451bb9ba)] - **src**: use spaceship operator in SocketAddress (James M Snell) [#56059](https://github.com/nodejs/node/pull/56059) +- \[[`ad9ebe417a`](https://github.com/nodejs/node/commit/ad9ebe417a)] - **src**: add missing qualifiers to env.cc (Yagiz Nizipli) [#56062](https://github.com/nodejs/node/pull/56062) +- \[[`56c4da240d`](https://github.com/nodejs/node/commit/56c4da240d)] - **src**: use std::string_view for process emit fns (Yagiz Nizipli) [#56086](https://github.com/nodejs/node/pull/56086) +- \[[`26ab8e9823`](https://github.com/nodejs/node/commit/26ab8e9823)] - **src**: remove dead code in async_wrap (Gerhard Stöbich) [#56065](https://github.com/nodejs/node/pull/56065) +- \[[`4dea44e468`](https://github.com/nodejs/node/commit/4dea44e468)] - **src**: avoid copy on getV8FastApiCallCount (Yagiz Nizipli) [#56081](https://github.com/nodejs/node/pull/56081) +- \[[`b778a4fe46`](https://github.com/nodejs/node/commit/b778a4fe46)] - **src**: fix check fd (theanarkh) [#56000](https://github.com/nodejs/node/pull/56000) +- \[[`971f5f54df`](https://github.com/nodejs/node/commit/971f5f54df)] - **src**: safely remove the last line from dotenv (Shima Ryuhei) [#55982](https://github.com/nodejs/node/pull/55982) +- \[[`497a9aea1c`](https://github.com/nodejs/node/commit/497a9aea1c)] - **src**: fix kill signal on Windows (Hüseyin Açacak) [#55514](https://github.com/nodejs/node/pull/55514) +- \[[`8a935489f9`](https://github.com/nodejs/node/commit/8a935489f9)] - **src,build**: add no user defined deduction guides of CTAD check (Chengzhong Wu) [#56071](https://github.com/nodejs/node/pull/56071) +- \[[`5edb8d5919`](https://github.com/nodejs/node/commit/5edb8d5919)] - **test**: remove test-fs-utimes flaky designation (Luigi Pinca) [#56052](https://github.com/nodejs/node/pull/56052) +- \[[`046e642a80`](https://github.com/nodejs/node/commit/046e642a80)] - **test**: ensure `cli.md` is in alphabetical order (Antoine du Hamel) [#56025](https://github.com/nodejs/node/pull/56025) +- \[[`da354f46cd`](https://github.com/nodejs/node/commit/da354f46cd)] - **test**: update WPT for WebCryptoAPI to 3e3374efde (Node.js GitHub Bot) [#56093](https://github.com/nodejs/node/pull/56093) +- \[[`9486c7ce4c`](https://github.com/nodejs/node/commit/9486c7ce4c)] - **test**: update WPT for WebCryptoAPI to 76dfa54e5d (Node.js GitHub Bot) [#56093](https://github.com/nodejs/node/pull/56093) +- \[[`a8809fc0f5`](https://github.com/nodejs/node/commit/a8809fc0f5)] - **test**: move test-worker-arraybuffer-zerofill to parallel (Luigi Pinca) [#56053](https://github.com/nodejs/node/pull/56053) +- \[[`6194435b9e`](https://github.com/nodejs/node/commit/6194435b9e)] - **test**: update WPT for url to 67880a4eb83ca9aa732eec4b35a1971ff5bf37ff (Node.js GitHub Bot) [#55999](https://github.com/nodejs/node/pull/55999) +- \[[`f7567d46d8`](https://github.com/nodejs/node/commit/f7567d46d8)] - **test**: make HTTP/1.0 connection test more robust (Arne Keller) [#55959](https://github.com/nodejs/node/pull/55959) +- \[[`c157e026fc`](https://github.com/nodejs/node/commit/c157e026fc)] - **test**: convert readdir test to use test runner (Thomas Chetwin) [#55750](https://github.com/nodejs/node/pull/55750) +- \[[`29362ce673`](https://github.com/nodejs/node/commit/29362ce673)] - **test**: make x509 crypto tests work with BoringSSL (Shelley Vohr) [#55927](https://github.com/nodejs/node/pull/55927) +- \[[`493e16c852`](https://github.com/nodejs/node/commit/493e16c852)] - **test**: fix determining lower priority (Livia Medeiros) [#55908](https://github.com/nodejs/node/pull/55908) +- \[[`99858ceb9f`](https://github.com/nodejs/node/commit/99858ceb9f)] - **test,crypto**: update WebCryptoAPI WPT (Filip Skokan) [#55997](https://github.com/nodejs/node/pull/55997) +- \[[`7c3a4d4bcd`](https://github.com/nodejs/node/commit/7c3a4d4bcd)] - **test_runner**: refactor Promise chain in run() (Colin Ihrig) [#55958](https://github.com/nodejs/node/pull/55958) +- \[[`95e8c4ef6c`](https://github.com/nodejs/node/commit/95e8c4ef6c)] - **test_runner**: refactor build Promise in Suite() (Colin Ihrig) [#55958](https://github.com/nodejs/node/pull/55958) +- \[[`c048865199`](https://github.com/nodejs/node/commit/c048865199)] - **test_runner**: simplify hook running logic (Colin Ihrig) [#55963](https://github.com/nodejs/node/pull/55963) +- \[[`8197815fe8`](https://github.com/nodejs/node/commit/8197815fe8)] - **test_runner**: mark snapshot testing as stable (Colin Ihrig) [#55897](https://github.com/nodejs/node/pull/55897) +- \[[`8a5d8c7669`](https://github.com/nodejs/node/commit/8a5d8c7669)] - **test_runner**: mark context.plan() as stable (Colin Ihrig) [#55895](https://github.com/nodejs/node/pull/55895) +- \[[`790a2ca3b7`](https://github.com/nodejs/node/commit/790a2ca3b7)] - **tools**: update `create-release-proposal` workflow (Antoine du Hamel) [#56054](https://github.com/nodejs/node/pull/56054) +- \[[`98ce4652e2`](https://github.com/nodejs/node/commit/98ce4652e2)] - **tools**: fix update-undici script (Michaël Zasso) [#56069](https://github.com/nodejs/node/pull/56069) +- \[[`d6a6c8ace1`](https://github.com/nodejs/node/commit/d6a6c8ace1)] - **tools**: allow dispatch of `tools.yml` from forks (Antoine du Hamel) [#56008](https://github.com/nodejs/node/pull/56008) +- \[[`cc96fce5eb`](https://github.com/nodejs/node/commit/cc96fce5eb)] - **tools**: fix nghttp3 updater script (Antoine du Hamel) [#56007](https://github.com/nodejs/node/pull/56007) +- \[[`2cd939cb95`](https://github.com/nodejs/node/commit/2cd939cb95)] - **tools**: filter release keys to reduce interactivity (Antoine du Hamel) [#55950](https://github.com/nodejs/node/pull/55950) +- \[[`4b3919f1be`](https://github.com/nodejs/node/commit/4b3919f1be)] - **tools**: update WPT updater (Antoine du Hamel) [#56003](https://github.com/nodejs/node/pull/56003) +- \[[`54c46b8464`](https://github.com/nodejs/node/commit/54c46b8464)] - **tools**: add WPT updater for specific subsystems (Mert Can Altin) [#54460](https://github.com/nodejs/node/pull/54460) +- \[[`32b1681b7f`](https://github.com/nodejs/node/commit/32b1681b7f)] - **tools**: use tokenless Codecov uploads (Michaël Zasso) [#55943](https://github.com/nodejs/node/pull/55943) +- \[[`475141e370`](https://github.com/nodejs/node/commit/475141e370)] - **tools**: add linter for release commit proposals (Antoine du Hamel) [#55923](https://github.com/nodejs/node/pull/55923) +- \[[`d093820f64`](https://github.com/nodejs/node/commit/d093820f64)] - **tools**: lint js in `doc/**/*.md` (Livia Medeiros) [#55904](https://github.com/nodejs/node/pull/55904) +- \[[`72eb710f0f`](https://github.com/nodejs/node/commit/72eb710f0f)] - **tools**: fix riscv64 build failed (Lu Yahan) [#52888](https://github.com/nodejs/node/pull/52888) +- \[[`882b70c83f`](https://github.com/nodejs/node/commit/882b70c83f)] - **tools**: bump cross-spawn from 7.0.3 to 7.0.5 in /tools/eslint (dependabot\[bot]) [#55894](https://github.com/nodejs/node/pull/55894) +- \[[`9eccd7dba9`](https://github.com/nodejs/node/commit/9eccd7dba9)] - **util**: add fast path for Latin1 decoding (Mert Can Altin) [#55275](https://github.com/nodejs/node/pull/55275) + +Windows 64-bit Installer: https://nodejs.org/dist/v23.4.0/node-v23.4.0-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v23.4.0/node-v23.4.0-arm64.msi \ +Windows 64-bit Binary: https://nodejs.org/dist/v23.4.0/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v23.4.0/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v23.4.0/node-v23.4.0.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v23.4.0/node-v23.4.0-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v23.4.0/node-v23.4.0-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v23.4.0/node-v23.4.0-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v23.4.0/node-v23.4.0-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v23.4.0/node-v23.4.0-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v23.4.0/node-v23.4.0-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v23.4.0/node-v23.4.0-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v23.4.0/node-v23.4.0-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v23.4.0/node-v23.4.0.tar.gz \ +Other release files: https://nodejs.org/dist/v23.4.0/ \ +Documentation: https://nodejs.org/docs/v23.4.0/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +686f245ea6aefb46e6807cffa66ba6db5f3dad4b557434c2e81e402774c810f9 node-v23.4.0-aix-ppc64.tar.gz +88fe807de7806ee3e0129cca5164fabff03eaa7c418d48749117ca4c8172ba11 node-v23.4.0-arm64.msi +06623a5bf78ceedc56a7bed6c299d78fc8c8724fe96b963392fddf9b20d854de node-v23.4.0-darwin-arm64.tar.gz +bd5e06f18f0e7cf45ba643e86493f2b7a00e174d25dd253d168c827b96977759 node-v23.4.0-darwin-arm64.tar.xz +5784c98d6710c0370f41243201d1684635d737ee8e6a40ea6f76b2b392cff396 node-v23.4.0-darwin-x64.tar.gz +c8b3e4310781972a1683c1d3d7b06e10cdccc66c623679bbc598b4b60bd2c40c node-v23.4.0-darwin-x64.tar.xz +230ce5c1f715ccf9e8b9e2d524322e4537c8d78caafe8a98ac30cbf29cd9b67d node-v23.4.0-headers.tar.gz +9fc8c0af707cf06cff6aeadd52942626ef7e7f7d0d2ed0ff0814875ce8482830 node-v23.4.0-headers.tar.xz +69b3cfd03a9dee46254f3308f5a74fd282f29854a604a88a4bbedc2f83b0b8e3 node-v23.4.0-linux-arm64.tar.gz +b9364f27e81dce2d1357c4918ef2c9edb918029c80de90583d13299478f3301e node-v23.4.0-linux-arm64.tar.xz +132bba301b4cb11ed4435c394b684c5a03e7a3f215a6b42875fd269dd6941f38 node-v23.4.0-linux-armv7l.tar.gz +ad5c8f18ba164978e1c299536c2a495a28d6578f8263fbd12cf8b3ad68553fd4 node-v23.4.0-linux-armv7l.tar.xz +26f7a2c1c89b960fd21aed5512a55dc5f3a1aa12964663496708107ac86d7c59 node-v23.4.0-linux-ppc64le.tar.gz +64d6c11a6d97f1fc05ca775b043458f183f922f2148e2337ac9f65c14eac6ec4 node-v23.4.0-linux-ppc64le.tar.xz +c47f1b56859eaa6ee0a2737e4d875c280dc3d84ae173ffd727438bfb4624cb81 node-v23.4.0-linux-s390x.tar.gz +0c18a606719ff77bbe76dc9dffe0cc2e264d3a3fc2eb4440d2b26b824a1f18d0 node-v23.4.0-linux-s390x.tar.xz +2d5ae1dfa7f67e96b23d1d1ff51b8c76c7ec51fbfb7c4c1f010101b9557a2a86 node-v23.4.0-linux-x64.tar.gz +c78502b5b786d950fa2f9fa5575704e36ab0b120693f3470f26ef4aa3082327f node-v23.4.0-linux-x64.tar.xz +682fa2e8d68c93188109be109019fb0eccded6ef1e2c5e22afbbbbc0f6eb2938 node-v23.4.0-win-arm64.7z +0f1f76a0e00652d261377af6bac63889c5da23eb4ef6f574055c8f54e8fe9d6e node-v23.4.0-win-arm64.zip +8f6649529618c5987f5218bcd6b96d57b4b53355ccf422a74f259568b0d4ef5c node-v23.4.0-win-x64.7z +17dc979797aa4c8a79e33b07b6dc3faa3fffc00d7a131660da3f608f5dbc3842 node-v23.4.0-win-x64.zip +3842c61cbf41104a4098e17c7ab47a0c3b02fa672cee26960f584ad122a65753 node-v23.4.0-x64.msi +357cb7d64c1c5106d3f9475e586834de8db7fbccb4b06da58b59a01963eb15c9 node-v23.4.0.pkg +1abc3d7ed398b0fd8606837552732f7bebce0cd2285069477d0692d318442248 node-v23.4.0.tar.gz +4bb14bf3faf790bb122a537b05d7bf4006fc51e78761b157ce453b63fa7e3371 node-v23.4.0.tar.xz +323e9b49334d09edeb07810304c39d3d3e14ae17259c97dfc38e0da64654fbe5 win-arm64/node.exe +a663818787224e59b0d571dc8346b8b9e8fc99786753971120fad7879bdcf24d win-arm64/node.lib +1fd3fba66ebb58cacb29a5070d433f135c153683d8997ec69ccdae0f463ac44a win-arm64/node_pdb.7z +02643be2e065524767ff5a772f7519b6ed5673bf1020cd2c2710545343207145 win-arm64/node_pdb.zip +6777eb57e6923820f4dd533920676695fc7bdc7b5bdc9e6468a9c595ba8b175c win-x64/node.exe +16d5b600ec216018913aea9a62de20765fdefbc1ec2cfd9ad6c39fb92e26678c win-x64/node.lib +16da7071d026f8ffda3c06c31a0ac4dd271e3c70c53c7b7f4e8a0553623d4b1f win-x64/node_pdb.7z +c9eb5f7ab037fe4be30ebad3797e3728454b3659de7dcef76a21c319cbdf0407 win-x64/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEwNYkhDnx1WBKr/tAIdkA/9sjN1YFAmdYYNMACgkQIdkA/9sj +N1Y7kw/+IuTONahRFML7LwE2U/RMsGVmIEOA/l4bQmI6Jn/68PUB12FiLuB8tBvJ ++fvQHmqqtTHxdp2000iewbUPnWRIMgreEYcHYlmooJVa3d7E7UN54/8gukIPgGeB +I0F5HomZFHA8VjfiLjVm6IGAsDejNMSdmYptNmllqf0VQ64NQTdSjoVnxUlhnkbM +U3nEqSGjEeLDpqjEnihNZfmvj8nTrGZNIvl93Xo+IReftFUp8ghyArMcMvuUD2Cl +dJTPMRWVMAh73nTk5tu8HnAruC6lBOrl/ZIuL9AUaghN1gzQ2IFibavWVqdrGhN/ +UB4OFpjjuGNQrv2yUfa8KNlNorhLzZ41IJgAtfc5GIr5jojgcbnfJx8Cs3OArSdR +UCsnLse1EIbbR/LaXrHNWFEQrUf+K3uvhvuS2E5BCksNcunZPtOTHClAkTfcH7rO +aRhwfbRpqoyHrhn0FdqF3kwlvds7d5DMJIZqXMGhpJF4Hc9o0QAwDNn89w+DvBF9 +MF/tBVoNsNlxMep9U0dlr0QUVKR3fso3Dl3Emg4fTWsXO0EDOXEDp8xX7aSx18fr +SD102PPqeb8oqCs9PeJc06cVYlqA6ZNY1859NFe2m7ZRNhfH0qsEwk0CTyOCS7W7 +U1bqG9TQZgDo1TP7D54ADirzWci0vA4qtM8bTrJ8EC4zxzU8K00= +=2RPO +-----END PGP SIGNATURE----- +``` From b049f6f6d63369e5a2b4759646bfee9e3c6d30a1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 13 Dec 2024 09:40:32 -0600 Subject: [PATCH 54/65] [automated]: crowdin sync (#7329) * 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> --------- Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Crowdin Bot Co-authored-by: github-merge-queue --- apps/site/pages/ko/index.mdx | 4 ++-- packages/i18n/locales/ko.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/site/pages/ko/index.mdx b/apps/site/pages/ko/index.mdx index 2f0beb35634f9..25f31ed624ab0 100644 --- a/apps/site/pages/ko/index.mdx +++ b/apps/site/pages/ko/index.mdx @@ -27,7 +27,7 @@ Node.js®는 무료, 오픈소스, 다중 플랫폼 JavaScript 런타임 환경 )} - + {({ release }) => ( 새로운 기능을 먼저 경험하고 싶다면 @@ -132,6 +132,6 @@ if (isMainThread) {
-Node.js에 대해 더 알고 싶다면 학습 자료를 확인하세요[Learning materials](/learn). +Node.js가 제공하는 [학습 자료](/learn)를 통해 더 많은 정보를 알아보세요. diff --git a/packages/i18n/locales/ko.json b/packages/i18n/locales/ko.json index 6b24efa221df4..28661422f9285 100644 --- a/packages/i18n/locales/ko.json +++ b/packages/i18n/locales/ko.json @@ -153,7 +153,7 @@ } }, "downloadReleasesTable": { - "changelog": "변경 로그", + "changelog": "변경로그", "releases": "릴리스", "docs": "문서" }, From 75d2dc2d7d15ad59b3aa1eaa69a9e5a6c3cd24df Mon Sep 17 00:00:00 2001 From: Amy Saranchuk <60277985+amyy2@users.noreply.github.com> Date: Fri, 13 Dec 2024 17:42:29 -0500 Subject: [PATCH 55/65] Fix: whitespace between the main content and progressive sidebar (#7271) * Fix whitespace between the main content and progressive sidebar * Remove .DS_Store files * Fix scrolling on sidebar --- apps/site/layouts/layouts.module.css | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/apps/site/layouts/layouts.module.css b/apps/site/layouts/layouts.module.css index 9300fc91cfe8d..ccfd3720bd5bf 100644 --- a/apps/site/layouts/layouts.module.css +++ b/apps/site/layouts/layouts.module.css @@ -14,7 +14,6 @@ mx-auto block w-full - overflow-auto sm:grid sm:grid-cols-[theme(spacing.52)_1fr] sm:grid-rows-[1fr] @@ -24,12 +23,15 @@ xl:grid-cols-[theme(spacing.80)_1fr_theme(spacing.80)]; > *:nth-child(1) { - @apply grid-in-[sidebar]; + @apply grid-in-[sidebar] + lg:sticky + lg:top-0 + lg:h-[100vh] + lg:overflow-y-auto; } > *:nth-child(2) { @apply contents - overflow-y-scroll sm:max-lg:block; > *:first-child { @@ -37,8 +39,6 @@ sm:bg-gradient-subtle sm:dark:bg-gradient-subtle-dark xl:px-18 - overflow-y-auto - overflow-x-hidden p-4 motion-safe:scroll-smooth sm:bg-fixed @@ -50,6 +50,8 @@ mt-8 border-t sm:mt-0 + lg:sticky + lg:top-0 lg:max-w-xs lg:border-l lg:border-t-0; From a84976d28750a7451430fabfc2051ccc1630963e Mon Sep 17 00:00:00 2001 From: "mpruser.k" Date: Sat, 14 Dec 2024 21:55:22 +0900 Subject: [PATCH 56/65] Add CSS structure for country-specific style overrides (#7326) (#7327) * feat: Add CSS structure for country-specific style overrides (#7326) * refactor: apply Tailwind classes for Korean-specific styles (#7326) * style: Comply with Tailwind Style Guide and Add Comments (#7326) --------- Co-authored-by: lucas Co-authored-by: mpruser --- apps/site/styles/index.css | 1 + apps/site/styles/locals.css | 10 ++++++++++ 2 files changed, 11 insertions(+) create mode 100644 apps/site/styles/locals.css diff --git a/apps/site/styles/index.css b/apps/site/styles/index.css index 827becbc14fd2..51f236e207c48 100644 --- a/apps/site/styles/index.css +++ b/apps/site/styles/index.css @@ -12,3 +12,4 @@ @import './base.css'; @import './markdown.css'; @import './effects.css'; +@import './locals.css'; diff --git a/apps/site/styles/locals.css b/apps/site/styles/locals.css new file mode 100644 index 0000000000000..2ce0fe2afecd9 --- /dev/null +++ b/apps/site/styles/locals.css @@ -0,0 +1,10 @@ +/** + * To enhance readability for Korean users, line spacing is increased, + * line breaks in the middle of words are prevented, and long words are + * managed to avoid disrupting the layout. + */ +html[lang='ko'] { + @apply break-words + break-keep + leading-7; +} From cc752c3d2de2cf92856d5a1eff0511ce0b0a1e0b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 14 Dec 2024 12:59:40 +0000 Subject: [PATCH 57/65] [automated]: crowdin sync (#7330) * 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> --------- Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Crowdin Bot Co-authored-by: bmuenzenmeyer --- apps/site/pages/id/about/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/site/pages/id/about/index.mdx b/apps/site/pages/id/about/index.mdx index bb2d0e29b91ee..623a5c9777f81 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 From dd071e3bd09212741a6b12a21800e2b83053ede3 Mon Sep 17 00:00:00 2001 From: Michele Riva Date: Sun, 15 Dec 2024 03:00:15 +0100 Subject: [PATCH 58/65] feat(search): implements Orama searchbox (#6908) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Rodrigo José Borba Fernandes --- .../Common/Search/States/WithAllResults.tsx | 40 --- .../Common/Search/States/WithError.tsx | 14 - .../Common/Search/States/WithNoResults.tsx | 16 -- .../Common/Search/States/WithPoweredBy.tsx | 41 --- .../Common/Search/States/WithSearchBox.tsx | 256 ------------------ .../Common/Search/States/WithSearchResult.tsx | 54 ---- .../Common/Search/States/index.module.css | 192 ------------- .../components/Common/Search/index.module.css | 38 --- apps/site/components/Common/Search/index.tsx | 175 ++++++++---- apps/site/components/Common/Search/utils.ts | 50 +++- .../components/Containers/NavBar/index.tsx | 6 +- .../MDX/SearchPage/index.module.css | 82 ------ apps/site/components/MDX/SearchPage/index.tsx | 146 ---------- .../useBottomScrollListener.test.mjs | 37 --- .../__tests__/useClickOutside.test.mjs | 45 --- .../__tests__/useKeyboardCommands.test.mjs | 51 ---- apps/site/hooks/react-client/index.ts | 3 - .../react-client/useBottomScrollListener.ts | 40 --- .../hooks/react-client/useClickOutside.ts | 20 -- .../hooks/react-client/useKeyboardCommands.ts | 38 --- apps/site/next.constants.mjs | 12 +- apps/site/next.mdx.use.mjs | 3 - apps/site/next.orama.mjs | 34 --- apps/site/package.json | 4 +- apps/site/pages/en/search.mdx | 6 - apps/site/pages/fa/search.mdx | 6 - apps/site/pages/fr/search.mdx | 6 - apps/site/pages/id/search.mdx | 6 - apps/site/pages/ja/search.mdx | 6 - apps/site/pages/ko/search.mdx | 6 - apps/site/pages/pt/search.mdx | 6 - apps/site/pages/tr/search.mdx | 6 - apps/site/pages/uk/search.mdx | 6 - apps/site/pages/zh-cn/search.mdx | 6 - apps/site/pages/zh-tw/search.mdx | 6 - .../scripts/orama-search/get-documents.mjs | 10 +- apps/site/types/index.ts | 1 - apps/site/types/search.ts | 8 - apps/site/util/searchUtils.ts | 10 - package-lock.json | 254 ++++++++++++++++- 40 files changed, 442 insertions(+), 1304 deletions(-) delete mode 100644 apps/site/components/Common/Search/States/WithAllResults.tsx delete mode 100644 apps/site/components/Common/Search/States/WithError.tsx delete mode 100644 apps/site/components/Common/Search/States/WithNoResults.tsx delete mode 100644 apps/site/components/Common/Search/States/WithPoweredBy.tsx delete mode 100644 apps/site/components/Common/Search/States/WithSearchBox.tsx delete mode 100644 apps/site/components/Common/Search/States/WithSearchResult.tsx delete mode 100644 apps/site/components/Common/Search/States/index.module.css delete mode 100644 apps/site/components/Common/Search/index.module.css delete mode 100644 apps/site/components/MDX/SearchPage/index.module.css delete mode 100644 apps/site/components/MDX/SearchPage/index.tsx delete mode 100644 apps/site/hooks/react-client/__tests__/useBottomScrollListener.test.mjs delete mode 100644 apps/site/hooks/react-client/__tests__/useClickOutside.test.mjs delete mode 100644 apps/site/hooks/react-client/__tests__/useKeyboardCommands.test.mjs delete mode 100644 apps/site/hooks/react-client/useBottomScrollListener.ts delete mode 100644 apps/site/hooks/react-client/useClickOutside.ts delete mode 100644 apps/site/hooks/react-client/useKeyboardCommands.ts delete mode 100644 apps/site/next.orama.mjs delete mode 100644 apps/site/pages/en/search.mdx delete mode 100644 apps/site/pages/fa/search.mdx delete mode 100644 apps/site/pages/fr/search.mdx delete mode 100644 apps/site/pages/id/search.mdx delete mode 100644 apps/site/pages/ja/search.mdx delete mode 100644 apps/site/pages/ko/search.mdx delete mode 100644 apps/site/pages/pt/search.mdx delete mode 100644 apps/site/pages/tr/search.mdx delete mode 100644 apps/site/pages/uk/search.mdx delete mode 100644 apps/site/pages/zh-cn/search.mdx delete mode 100644 apps/site/pages/zh-tw/search.mdx delete mode 100644 apps/site/types/search.ts delete mode 100644 apps/site/util/searchUtils.ts diff --git a/apps/site/components/Common/Search/States/WithAllResults.tsx b/apps/site/components/Common/Search/States/WithAllResults.tsx deleted file mode 100644 index 481edb8cc3966..0000000000000 --- a/apps/site/components/Common/Search/States/WithAllResults.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import type { Results } from '@orama/orama'; -import NextLink from 'next/link'; -import { useParams } from 'next/navigation'; -import { useTranslations } from 'next-intl'; -import type { FC } from 'react'; - -import type { SearchDoc } from '@/types'; - -import styles from './index.module.css'; - -type SearchResults = Results; - -type SeeAllProps = { - searchResults: SearchResults; - searchTerm: string; - selectedFacetName: string; - onSeeAllClick: () => void; -}; - -export const WithAllResults: FC = props => { - const t = useTranslations(); - const params = useParams(); - - const locale = params?.locale ?? 'en'; - const resultsCount = props.searchResults?.count?.toLocaleString('en') ?? 0; - const searchParams = new URLSearchParams(); - - searchParams.set('q', props.searchTerm); - searchParams.set('section', props.selectedFacetName); - - const allResultsURL = `/${locale}/search?${searchParams.toString()}`; - - return ( -
- - {t('components.search.seeAll.text', { count: resultsCount })} - -
- ); -}; diff --git a/apps/site/components/Common/Search/States/WithError.tsx b/apps/site/components/Common/Search/States/WithError.tsx deleted file mode 100644 index 33eecbabd147d..0000000000000 --- a/apps/site/components/Common/Search/States/WithError.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { useTranslations } from 'next-intl'; -import type { FC } from 'react'; - -import styles from './index.module.css'; - -export const WithError: FC = () => { - const t = useTranslations(); - - return ( -
- {t('components.search.searchError.text')} -
- ); -}; diff --git a/apps/site/components/Common/Search/States/WithNoResults.tsx b/apps/site/components/Common/Search/States/WithNoResults.tsx deleted file mode 100644 index 5b55c60469c4b..0000000000000 --- a/apps/site/components/Common/Search/States/WithNoResults.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import { useTranslations } from 'next-intl'; -import type { FC } from 'react'; - -import styles from './index.module.css'; - -type NoResultsProps = { searchTerm: string }; - -export const WithNoResults: FC = props => { - const t = useTranslations(); - - return ( -
- {t('components.search.noResults.text', { query: props.searchTerm })} -
- ); -}; diff --git a/apps/site/components/Common/Search/States/WithPoweredBy.tsx b/apps/site/components/Common/Search/States/WithPoweredBy.tsx deleted file mode 100644 index 3986280d5d7a6..0000000000000 --- a/apps/site/components/Common/Search/States/WithPoweredBy.tsx +++ /dev/null @@ -1,41 +0,0 @@ -'use client'; - -import Image from 'next/image'; -import { useTranslations } from 'next-intl'; -import { useTheme } from 'next-themes'; -import { useEffect, useState } from 'react'; - -import styles from './index.module.css'; - -const getLogoURL = (theme: string = 'dark') => - `https://website-assets.oramasearch.com/orama-when-${theme}.svg`; - -export const WithPoweredBy = () => { - const t = useTranslations(); - const { resolvedTheme } = useTheme(); - const [logoURL, setLogoURL] = useState(); - - useEffect(() => setLogoURL(getLogoURL(resolvedTheme)), [resolvedTheme]); - - return ( -
- {t('components.search.poweredBy.text')} - - - {logoURL && ( - Powered by OramaSearch - )} - -
- ); -}; diff --git a/apps/site/components/Common/Search/States/WithSearchBox.tsx b/apps/site/components/Common/Search/States/WithSearchBox.tsx deleted file mode 100644 index d3a2cff45087c..0000000000000 --- a/apps/site/components/Common/Search/States/WithSearchBox.tsx +++ /dev/null @@ -1,256 +0,0 @@ -'use client'; - -import { - MagnifyingGlassIcon, - ChevronLeftIcon, -} from '@heroicons/react/24/outline'; -import type { Results, Nullable } from '@orama/orama'; -import { useState, useRef, useEffect } from 'react'; -import type { FC } from 'react'; - -import styles from '@/components/Common/Search/States/index.module.css'; -import { WithAllResults } from '@/components/Common/Search/States/WithAllResults'; -import { WithError } from '@/components/Common/Search/States/WithError'; -import { WithNoResults } from '@/components/Common/Search/States/WithNoResults'; -import { WithPoweredBy } from '@/components/Common/Search/States/WithPoweredBy'; -import { WithSearchResult } from '@/components/Common/Search/States/WithSearchResult'; -import Tabs from '@/components/Common/Tabs'; -import { useClickOutside, useKeyboardCommands } from '@/hooks/react-client'; -import { useRouter } from '@/navigation.mjs'; -import { DEFAULT_ORAMA_QUERY_PARAMS } from '@/next.constants.mjs'; -import { search as oramaSearch, getInitialFacets } from '@/next.orama.mjs'; -import type { SearchDoc } from '@/types'; -import { searchHitToLinkPath } from '@/util/searchUtils'; - -type Facets = { [key: string]: number }; - -type SearchResults = Nullable>; - -type SearchBoxProps = { onClose: () => void }; - -export const WithSearchBox: FC = ({ onClose }) => { - const [searchTerm, setSearchTerm] = useState(''); - const [searchResults, setSearchResults] = useState(null); - const [selectedResult, setSelectedResult] = useState(); - const [selectedFacet, setSelectedFacet] = useState(0); - const [searchError, setSearchError] = useState>(null); - - const router = useRouter(); - const searchInputRef = useRef(null); - const searchBoxRef = useRef(null); - - const search = (term: string) => { - oramaSearch({ - term, - ...DEFAULT_ORAMA_QUERY_PARAMS, - mode: 'fulltext', - returning: [ - 'path', - 'pageSectionTitle', - 'pageTitle', - 'path', - 'siteSection', - ], - ...filterBySection(), - }) - .then(setSearchResults) - .catch(setSearchError); - }; - - const reset = () => { - setSearchTerm(''); - setSearchResults(null); - setSelectedResult(undefined); - setSelectedFacet(0); - }; - - const handleClose = () => { - reset(); - onClose(); - }; - - useClickOutside(searchBoxRef, handleClose); - - useEffect(() => { - searchInputRef.current?.focus(); - - getInitialFacets().then(setSearchResults).catch(setSearchError); - - return reset; - }, []); - - useEffect( - () => { - search(searchTerm); - }, - // we don't need to care about memoization of search function - // eslint-disable-next-line react-hooks/exhaustive-deps - [searchTerm, selectedFacet] - ); - - useKeyboardCommands(cmd => { - if (searchError || !searchResults || searchResults.count <= 0) { - return; - } - - switch (true) { - case cmd === 'down' && selectedResult === undefined: - setSelectedResult(0); - break; - case cmd === 'down' && - selectedResult != undefined && - selectedResult < searchResults.count && - selectedResult < DEFAULT_ORAMA_QUERY_PARAMS.limit - 1: - setSelectedResult(selectedResult + 1); - break; - case cmd === 'up' && selectedResult != undefined && selectedResult != 0: - setSelectedResult(selectedResult - 1); - break; - case cmd === 'enter': - handleEnter(); - break; - default: - } - }); - - const handleEnter = () => { - if (!searchResults || !selectedResult) { - return; - } - - const selectedHit = searchResults.hits[selectedResult]; - - if (!selectedHit) { - return; - } - - handleClose(); - router.push(searchHitToLinkPath(selectedHit)); - }; - - const onSubmit = (e: React.FormEvent) => { - e.preventDefault(); - - handleClose(); - router.push(`/search?q=${searchTerm}§ion=${selectedFacetName}`); - }; - - const changeFacet = (idx: string) => setSelectedFacet(Number(idx)); - - const filterBySection = () => { - if (selectedFacet === 0) { - return {}; - } - - return { where: { siteSection: { eq: selectedFacetName } } }; - }; - - const facets: Facets = { - all: searchResults?.facets - ? Object.values(searchResults?.facets.siteSection.values).reduce( - (a, b) => a + b, - 0 - ) - : 0, - ...(searchResults?.facets?.siteSection?.values ?? {}), - }; - - const selectedFacetName = Object.keys(facets)[selectedFacet]; - - return ( -
-
-
-
- - - - -
- setSearchTerm(event.target.value)} - value={searchTerm} - /> -
-
- -
- ({ - key: facetName, - label: facetName, - secondaryLabel: `(${facets[facetName].toLocaleString('en')})`, - value: idx.toString(), - }))} - onValueChange={changeFacet} - /> -
- -
- {searchError && } - - {!searchError && ( - <> - {searchResults && - searchResults.count > 0 && - searchResults.hits.map((hit, idx) => ( - - ))} - - {searchResults && searchResults.count === 0 && ( - - )} - - {searchResults && searchResults.count > 8 && ( - - )} - - )} -
- -
- -
-
-
-
- ); -}; diff --git a/apps/site/components/Common/Search/States/WithSearchResult.tsx b/apps/site/components/Common/Search/States/WithSearchResult.tsx deleted file mode 100644 index 05e0dd47ef051..0000000000000 --- a/apps/site/components/Common/Search/States/WithSearchResult.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import type { Result } from '@orama/orama'; -import { useEffect, type FC, useRef } from 'react'; - -import { pathToBreadcrumbs } from '@/components/Common/Search/utils'; -import Link from '@/components/Link'; -import { highlighter } from '@/next.orama.mjs'; -import type { SearchDoc } from '@/types'; -import { searchHitToLinkPath } from '@/util/searchUtils'; - -import styles from './index.module.css'; - -type SearchResultProps = { - hit: Result; - searchTerm: string; - selected: boolean; - idx: number; -}; - -export const WithSearchResult: FC = props => { - const divRef = useRef(null); - const path = searchHitToLinkPath(props.hit); - - useEffect(() => { - if (props.selected && divRef.current) { - divRef.current.scrollIntoView({ block: 'center' }); - } - }, [props.selected]); - - return ( - -
-
- {pathToBreadcrumbs(props.hit.document.path).join(' > ')} - {' > '} - {props.hit.document.pageTitle} -
- - ); -}; diff --git a/apps/site/components/Common/Search/States/index.module.css b/apps/site/components/Common/Search/States/index.module.css deleted file mode 100644 index a4a3f7041c97e..0000000000000 --- a/apps/site/components/Common/Search/States/index.module.css +++ /dev/null @@ -1,192 +0,0 @@ -.searchBoxModalContainer { - @apply fixed - inset-0 - z-50 - flex - items-center - justify-center - bg-neutral-900 - bg-opacity-90 - dark:bg-neutral-900 - dark:bg-opacity-90; -} - -.searchBoxModalPanel { - @apply fixed - h-screen - w-full - bg-neutral-100 - md:h-[450px] - md:max-w-3xl - md:rounded-xl - md:shadow-lg - dark:bg-neutral-950; -} - -.searchBoxInnerPanel { - @apply pt-12 - text-neutral-800 - md:pt-2 - dark:text-neutral-400; -} - -.searchBoxMagnifyingGlassIcon { - @apply absolute - top-[10px] - hidden - size-6 - md:block; -} - -.searchBoxBackIconContainer { - @apply block - md:hidden; -} - -.searchBoxBackIcon { - @apply absolute - top-[7px] - block - size-6 - md:hidden; -} - -.searchBoxInputContainer { - @apply relative - px-2 - md:px-4; -} - -.searchBoxInput { - @apply w-full - rounded-b-none - border-b - border-neutral-300 - bg-transparent - py-2 - pl-8 - pr-4 - focus:outline-none - dark:border-neutral-900 - dark:text-neutral-300 - dark:placeholder-neutral-300; -} - -.fulltextResultsContainer { - @apply h-80 - overflow-auto - md:px-4; -} - -.fulltextSearchResult { - @apply flex - flex-col - rounded-md - p-2 - text-left - text-sm; - - &[aria-selected='true'], - &:hover { - @apply bg-neutral-300 - dark:bg-neutral-900; - } -} - -.fulltextSearchResultTitle { - @apply text-neutral-800 - dark:text-neutral-300; -} - -.fulltextSearchResultBreadcrumb { - @apply mt-1 - text-xs - capitalize - text-neutral-800 - dark:text-neutral-600; -} - -.fulltextSearchSections { - @apply mb-1 - mt-2 - p-2 - md:px-4; -} - -.seeAllFulltextSearchResults { - @apply m-auto - mb-2 - mt-4 - w-full - text-center - text-sm - text-neutral-700 - hover:underline - dark:text-neutral-600; -} - -.poweredBy { - @apply flex - text-xs - text-neutral-950 - dark:text-neutral-200; -} - -.poweredByLogo { - @apply ml-2 - w-16; -} - -.emptyStateContainer { - @apply flex - h-[80%] - w-full - flex-col - items-center - justify-center - text-center - text-sm - text-neutral-600 - dark:text-neutral-500; -} - -.noResultsContainer { - @apply flex - h-[80%] - w-full - items-center - justify-center - text-center - text-sm - text-neutral-600 - dark:text-neutral-500; -} - -.noResultsTerm { - @apply font-semibold; -} - -.searchErrorContainer { - @apply flex - h-[80%] - w-full - items-center - justify-center - text-center - text-sm - text-neutral-600 - dark:text-neutral-500; -} - -.fulltextSearchFooter { - @apply flex - w-full - justify-end - rounded-b-xl - border-t - border-neutral-300 - bg-neutral-100 - p-4 - dark:border-neutral-900 - dark:bg-neutral-950; -} diff --git a/apps/site/components/Common/Search/index.module.css b/apps/site/components/Common/Search/index.module.css deleted file mode 100644 index 734019bf8cad0..0000000000000 --- a/apps/site/components/Common/Search/index.module.css +++ /dev/null @@ -1,38 +0,0 @@ -.searchButton { - @apply flex - grow - basis-80 - items-center - gap-2 - rounded-md - bg-neutral-200 - p-2 - text-sm - text-neutral-800 - hover:bg-neutral-300 - hover:text-neutral-900 - sm:mr-auto - dark:bg-neutral-900 - dark:text-neutral-600 - dark:hover:bg-neutral-800 - dark:hover:text-neutral-500; -} - -.magnifyingGlassIcon { - @apply size-5; -} - -.shortcutIndicator { - @apply font-ibm-plex-mono - invisible - flex - flex-1 - items-center - justify-end - self-center - px-1 - text-xs - motion-safe:transition-opacity - motion-safe:duration-100 - md:visible; -} diff --git a/apps/site/components/Common/Search/index.tsx b/apps/site/components/Common/Search/index.tsx index 652daa66f1d74..1bab4ebbed5ea 100644 --- a/apps/site/components/Common/Search/index.tsx +++ b/apps/site/components/Common/Search/index.tsx @@ -1,61 +1,144 @@ 'use client'; -import { MagnifyingGlassIcon } from '@heroicons/react/24/outline'; -import classNames from 'classnames'; -import { useTranslations } from 'next-intl'; -import { useState, type FC } from 'react'; +import { OramaSearchBox, OramaSearchButton } from '@orama/react-components'; +import { useTranslations, useLocale } from 'next-intl'; +import { useTheme } from 'next-themes'; +import { type FC } from 'react'; -import { WithSearchBox } from '@/components/Common/Search/States/WithSearchBox'; -import { useDetectOS } from '@/hooks'; -import { useKeyboardCommands } from '@/hooks/react-client'; +import { useRouter } from '@/navigation.mjs'; +import { + ORAMA_CLOUD_ENDPOINT, + ORAMA_CLOUD_API_KEY, + DEFAULT_ORAMA_QUERY_PARAMS, + DEFAULT_ORAMA_SUGGESTIONS, + BASE_URL, +} from '@/next.constants.mjs'; -import styles from './index.module.css'; +type ResultMapDescription = { + path: string; + pageSectionTitle: string; +}; + +type ResultMapPath = { path: string; siteSection: string }; + +import { themeConfig } from './utils'; -export const SearchButton: FC = () => { - const [isOpen, setIsOpen] = useState(false); +const uppercaseFirst = (word: string) => + word.charAt(0).toUpperCase() + word.slice(1); + +const getFormattedPath = (path: string, title: string) => + `${path + .replace(/#.+$/, '') + .split('/') + .map(element => element.replaceAll('-', ' ')) + .map(element => uppercaseFirst(element)) + .filter(Boolean) + .join(' > ')} — ${title}`; + +const SearchButton: FC = () => { + const { resolvedTheme } = useTheme(); const t = useTranslations(); - const openSearchBox = () => setIsOpen(true); - const closeSearchBox = () => setIsOpen(false); - - useKeyboardCommands(cmd => { - switch (cmd) { - case 'cmd-k': - openSearchBox(); - break; - case 'escape': - closeSearchBox(); - break; - default: - } - }); - - const { os } = useDetectOS(); - - const osCommandKey = os === 'MAC' ? '⌘' : 'Ctrl'; - const isOSLoading = os === 'LOADING'; + const locale = useLocale(); + const colorScheme = resolvedTheme as 'light' | 'dark'; + const router = useRouter(); + + const sourceMap = { + title: 'pageSectionTitle', + description: 'formattedPath', + path: 'path', + }; + + const resultMap = { + ...sourceMap, + description: ({ path, pageSectionTitle }: ResultMapDescription) => + getFormattedPath(path, pageSectionTitle), + path: ({ path, siteSection }: ResultMapPath) => + siteSection.toLowerCase() === 'docs' ? `/${path}` : `/${locale}/${path}`, + section: 'siteSection', + }; return ( <> - - - {isOpen ? : null} + + + { + if (!href) { + return href; + } + + const baseURLObject = new URL(BASE_URL); + const baseURLHostName = baseURLObject.hostname; + + const searchBoxURLObject = new URL(href); + const searchBoxURLHostName = searchBoxURLObject.hostname; + const serachBoxURLPathName = searchBoxURLObject.pathname; + + // We do not want to add the locale to the url for external links and docs links + if ( + baseURLHostName !== searchBoxURLHostName || + serachBoxURLPathName.startsWith('/docs/') + ) { + return href; + } + + const URLWithLocale = new URL( + `${locale}${searchBoxURLObject.pathname}`, + searchBoxURLObject.origin + ); + + return URLWithLocale.href; + }} + onAnswerSourceClick={event => { + event.preventDefault(); + + const baseURLObject = new URL(BASE_URL); + + const { path } = event.detail.source; + + const finalPath = path.startsWith('docs/') + ? path + : `${locale}/${path}`; + + const finalURL = new URL(finalPath, baseURLObject); + + window.open(finalURL, '_blank'); + }} + onSearchResultClick={event => { + event.preventDefault(); + + const fullURLObject = new URL(event.detail.result.path, BASE_URL); + + // result.path already contains LOCALE. Locale is set to undefined here so router does not add it once again. + router.push(fullURLObject.href, { + locale: undefined, + }); + }} + /> ); }; + +export default SearchButton; diff --git a/apps/site/components/Common/Search/utils.ts b/apps/site/components/Common/Search/utils.ts index ca204dda9b64f..429f47b3a7d58 100644 --- a/apps/site/components/Common/Search/utils.ts +++ b/apps/site/components/Common/Search/utils.ts @@ -1,7 +1,43 @@ -export const pathToBreadcrumbs = (path: string) => - path - .replace(/#.+$/, '') - .split('/') - .slice(0, -1) - .map(element => element.replaceAll('-', ' ')) - .filter(Boolean); +import tailwindConfig from '@/tailwind.config'; + +const colors = tailwindConfig.theme.colors; +export const themeConfig = { + colors: { + light: { + '--text-color-primary': colors.neutral[900], + '--text-color-accent': colors.green[600], + '--background-color-secondary': colors.neutral[100], + '--background-color-tertiary': colors.neutral[300], + '--border-color-accent': colors.green[600], + '--border-color-primary': colors.neutral[200], + '--border-color-tertiary': colors.green[700], + '--button-background-color-primary': colors.green[600], + '--button-background-color-secondary': colors.white, + '--button-background-color-secondary-hover': colors.neutral[100], + '--button-border-color-secondary': colors.neutral[300], + '--button-text-color-secondary': colors.neutral[900], + '--chat-button-border-color-gradientThree': colors.green[400], + '--chat-button-border-color-gradientFour': colors.green[700], + '--chat-button-background-color-gradientOne': colors.green[600], + '--chat-button-background-color-gradientTwo': colors.green[300], + }, + dark: { + '--text-color-primary': colors.neutral[100], + '--text-color-accent': colors.green[400], + '--background-color-secondary': colors.neutral[950], + '--background-color-tertiary': colors.neutral[900], + '--border-color-accent': colors.green[400], + '--border-color-primary': colors.neutral[900], + '--border-color-tertiary': colors.green[300], + '--button-background-color-primary': colors.green[400], + '--button-background-color-secondary': colors.neutral[950], + '--button-background-color-secondary-hover': colors.neutral[900], + '--button-border-color-secondary': colors.neutral[900], + '--button-text-color-secondary': colors.neutral[200], + '--chat-button-border-color-gradientThree': colors.green[400], + '--chat-button-border-color-gradientFour': colors.green[700], + '--chat-button-background-color-gradientOne': colors.green[400], + '--chat-button-background-color-gradientTwo': colors.green[800], + }, + }, +}; diff --git a/apps/site/components/Containers/NavBar/index.tsx b/apps/site/components/Containers/NavBar/index.tsx index 9439d7b4cd1d4..08bbdaf23da35 100644 --- a/apps/site/components/Containers/NavBar/index.tsx +++ b/apps/site/components/Containers/NavBar/index.tsx @@ -4,11 +4,11 @@ import Hamburger from '@heroicons/react/24/solid/Bars3Icon'; import XMark from '@heroicons/react/24/solid/XMarkIcon'; import GitHubIcon from '@node-core/ui-components/Icons/Social/GitHub'; import * as Label from '@radix-ui/react-label'; +import dynamic from 'next/dynamic'; import { useState } from 'react'; import type { FC, ComponentProps, HTMLAttributeAnchorTarget } from 'react'; import LanguageDropdown from '@/components/Common/LanguageDropDown'; -import { SearchButton } from '@/components/Common/Search'; import ThemeToggle from '@/components/Common/ThemeToggle'; import NavItem from '@/components/Containers/NavBar/NavItem'; import Link from '@/components/Link'; @@ -17,6 +17,10 @@ import type { FormattedMessage } from '@/types'; import style from './index.module.css'; +const SearchButton = dynamic(() => import('@/components/Common/Search'), { + ssr: false, +}); + const navInteractionIcons = { show: , close: , diff --git a/apps/site/components/MDX/SearchPage/index.module.css b/apps/site/components/MDX/SearchPage/index.module.css deleted file mode 100644 index 777e5af913050..0000000000000 --- a/apps/site/components/MDX/SearchPage/index.module.css +++ /dev/null @@ -1,82 +0,0 @@ -.searchPageContainer { - @apply mx-auto - w-full - px-4 - py-14 - md:max-w-screen-xl; -} - -.searchTermContainer { - @apply relative - flex - w-full - flex-col - justify-start - gap-1 - px-6 - text-left - md:px-0; -} - -.searchResultsColumns { - @apply relative - mt-12 - grid - gap-4 - md:grid-cols-[15%_1fr]; -} - -.facetsColumn { - @apply sticky - top-0 - flex - gap-4 - overflow-x-auto - px-6 - capitalize - md:flex-col - md:px-0; -} - -.facetCount { - @apply ml-2 - text-sm - text-neutral-500 - dark:text-neutral-800; -} - -.resultsColumn { - @apply flex - flex-col - gap-4 - px-2; -} - -.searchResult { - @apply flex - w-full - flex-col - rounded-lg - px-4 - py-2 - hover:bg-neutral-100 - dark:hover:bg-neutral-900; -} - -.searchResultTitle { - @apply text-lg; -} - -.searchResultPageTitle { - @apply text-sm - capitalize - text-neutral-500 - dark:text-neutral-600; -} - -.searchResultSnippet { - @apply my-2 - text-sm - text-neutral-500 - dark:text-neutral-400; -} diff --git a/apps/site/components/MDX/SearchPage/index.tsx b/apps/site/components/MDX/SearchPage/index.tsx deleted file mode 100644 index 1702eb288dc7c..0000000000000 --- a/apps/site/components/MDX/SearchPage/index.tsx +++ /dev/null @@ -1,146 +0,0 @@ -'use client'; - -import type { Nullable, Results, Result } from '@orama/orama'; -import { useSearchParams } from 'next/navigation'; -import { useTranslations } from 'next-intl'; -import { useEffect, useState, type FC } from 'react'; - -import { WithPoweredBy } from '@/components/Common/Search/States/WithPoweredBy'; -import { WithSearchBox } from '@/components/Common/Search/States/WithSearchBox'; -import { pathToBreadcrumbs } from '@/components/Common/Search/utils'; -import Link from '@/components/Link'; -import { useBottomScrollListener } from '@/hooks/react-client'; -import { BASE_URL, DEFAULT_ORAMA_QUERY_PARAMS } from '@/next.constants.mjs'; -import { search as oramaSearch, highlighter } from '@/next.orama.mjs'; -import type { SearchDoc } from '@/types'; - -import styles from './index.module.css'; - -type SearchResults = Nullable>; -type Hit = Result; - -const SearchPage: FC = () => { - const t = useTranslations(); - const searchParams = useSearchParams(); - const [searchResults, setSearchResults] = useState(null); - const [hits, setHits] = useState>([]); - const [offset, setOffset] = useState(0); - - const searchTerm = searchParams?.get('q'); - const searchSection = searchParams?.get('section'); - const [shownSearchBox, setShownSearchbox] = useState(!searchTerm); - - useBottomScrollListener(() => setOffset(offset => offset + 10)); - - // eslint-disable-next-line react-hooks/exhaustive-deps - useEffect(() => search(offset), [offset]); - - useEffect(() => { - setHits([]); - search(0); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [searchSection, searchTerm]); - - const uniqueHits = (newHits: Array) => - newHits.filter( - (obj, index) => newHits.findIndex(item => item.id === obj.id) === index - ); - - const search = (resultsOffset = 0) => { - oramaSearch({ - ...DEFAULT_ORAMA_QUERY_PARAMS, - mode: 'fulltext', - term: searchTerm || '', - limit: 10, - offset: resultsOffset, - ...filterBySection(), - }) - .then(results => { - setSearchResults(results); - setHits(hits => uniqueHits([...hits, ...(results?.hits ?? [])])); - }) - .catch(); - }; - - const facets = { - all: searchResults?.count ?? 0, - ...(searchResults?.facets?.siteSection?.values ?? {}), - }; - - const filterBySection = () => - searchSection && searchSection !== 'all' - ? { where: { siteSection: { eq: searchSection } } } - : {}; - - const getDocumentURL = (siteSection: string, path: string) => { - const isAPIResult = siteSection.toLowerCase() === 'docs'; - const basePath = isAPIResult ? BASE_URL : ''; - return `${basePath}/${path}`; - }; - - return ( -
- {shownSearchBox ? ( - setShownSearchbox(false)} /> - ) : null} -
-

- {t('components.search.searchPage.title', { query: searchTerm })} -

- - -
- -
-
- {Object.keys(facets).map(facetName => ( - - {facetName} - - ({facets[facetName as keyof typeof facets]}) - - - ))} -
- -
- {hits?.map(hit => ( - -
-

- {hit.document.pageSectionTitle} -

- -

- -

- Home {'>'} {pathToBreadcrumbs(hit.document.path).join(' > ')} -
-
- - ))} -
-
-
- ); -}; - -export default SearchPage; diff --git a/apps/site/hooks/react-client/__tests__/useBottomScrollListener.test.mjs b/apps/site/hooks/react-client/__tests__/useBottomScrollListener.test.mjs deleted file mode 100644 index db3dee7456d6f..0000000000000 --- a/apps/site/hooks/react-client/__tests__/useBottomScrollListener.test.mjs +++ /dev/null @@ -1,37 +0,0 @@ -import { fireEvent, renderHook, act } from '@testing-library/react'; - -import useBottomScrollListener from '@/hooks/react-client/useBottomScrollListener'; - -describe('useBottomScrollListener', () => { - it('should call the callback when the scroll reaches the bottom', () => { - const callback = jest.fn(); - renderHook(() => useBottomScrollListener(callback)); - - act(() => { - fireEvent.scroll(window, { - target: { scrollY: 100, innerHeight: 200, scrollHeight: 200 }, - }); - }); - - // timout is needed because the callback is called in the next tick - setTimeout(() => { - expect(callback).toHaveBeenCalled(); - }, 1); - }); - - it('should not call the callback when the scroll does not reach the bottom', () => { - const callback = jest.fn(); - renderHook(() => useBottomScrollListener(callback)); - - act(() => { - fireEvent.scroll(window, { - target: { scrollY: 100, innerHeight: 200, scrollHeight: 300 }, - }); - }); - - // timout is needed because the callback is called in the next tick - setTimeout(() => { - expect(callback).not.toHaveBeenCalled(); - }, 1); - }); -}); diff --git a/apps/site/hooks/react-client/__tests__/useClickOutside.test.mjs b/apps/site/hooks/react-client/__tests__/useClickOutside.test.mjs deleted file mode 100644 index 9bcb82fd092de..0000000000000 --- a/apps/site/hooks/react-client/__tests__/useClickOutside.test.mjs +++ /dev/null @@ -1,45 +0,0 @@ -import { renderHook, act } from '@testing-library/react'; - -import useClickOutside from '@/hooks/react-client/useClickOutside'; - -describe('useClickOutside', () => { - it('should call the callback function when clicked outside the element', () => { - const fn = jest.fn(); - const { rerender } = renderHook(() => - useClickOutside({ current: null }, fn) - ); - - const mockEvent = new MouseEvent('click', { bubbles: true }); - const mockElement = document.createElement('div'); - - rerender({ current: mockElement }, fn); - - act(() => { - document.dispatchEvent(mockEvent); - }); - - setTimeout(() => { - expect(fn).toHaveBeenCalledTimes(1); - }, 1); - }); - - it('should not call the callback function when clicked inside the element', () => { - const fn = jest.fn(); - const { rerender } = renderHook(() => - useClickOutside({ current: null }, fn) - ); - - const mockEvent = new MouseEvent('click', { bubbles: true }); - const mockElement = document.createElement('div'); - const mockChildElement = document.createElement('button'); - mockElement.appendChild(mockChildElement); - - rerender({ current: mockElement }, fn); - - act(() => { - mockChildElement.dispatchEvent(mockEvent); - }); - - expect(fn).not.toHaveBeenCalled(); - }); -}); diff --git a/apps/site/hooks/react-client/__tests__/useKeyboardCommands.test.mjs b/apps/site/hooks/react-client/__tests__/useKeyboardCommands.test.mjs deleted file mode 100644 index dc52ed2acf454..0000000000000 --- a/apps/site/hooks/react-client/__tests__/useKeyboardCommands.test.mjs +++ /dev/null @@ -1,51 +0,0 @@ -import { renderHook, act, fireEvent } from '@testing-library/react'; - -import useKeyboardCommands from '@/hooks/react-client/useKeyboardCommands'; - -describe('useKeyboardCommands', () => { - it('should call the callback function with the correct command', () => { - const fn = jest.fn(); - renderHook(props => useKeyboardCommands(props), { initialProps: fn }); - - act(() => { - fireEvent.keyDown(document, { key: 'k', metaKey: true }); - }); - expect(fn).toHaveBeenCalledWith('cmd-k'); - fn.mockClear(); - - act(() => { - fireEvent.keyDown(document, { key: 'Escape' }); - }); - expect(fn).toHaveBeenCalledWith('escape'); - fn.mockClear(); - - act(() => { - fireEvent.keyDown(document, { key: 'Enter' }); - }); - expect(fn).toHaveBeenCalledWith('enter'); - fn.mockClear(); - - act(() => { - fireEvent.keyDown(document, { key: 'ArrowDown' }); - }); - expect(fn).toHaveBeenCalledWith('down'); - fn.mockClear(); - - act(() => { - fireEvent.keyDown(document, { key: 'ArrowUp' }); - }); - expect(fn).toHaveBeenCalledWith('up'); - fn.mockClear(); - }); - - it('should not call the callback function for unsupported keys', () => { - const fn = jest.fn(); - renderHook(props => useKeyboardCommands(props), { initialProps: fn }); - - act(() => { - fireEvent.keyDown(document, { key: 'a' }); - }); - - expect(fn).not.toHaveBeenCalled(); - }); -}); diff --git a/apps/site/hooks/react-client/index.ts b/apps/site/hooks/react-client/index.ts index c78f8d3cfbc38..33a9392db1a58 100644 --- a/apps/site/hooks/react-client/index.ts +++ b/apps/site/hooks/react-client/index.ts @@ -3,7 +3,4 @@ export { default as useDetectOS } from './useDetectOS'; export { default as useMediaQuery } from './useMediaQuery'; export { default as useNotification } from './useNotification'; export { default as useClientContext } from './useClientContext'; -export { default as useKeyboardCommands } from './useKeyboardCommands'; -export { default as useClickOutside } from './useClickOutside'; -export { default as useBottomScrollListener } from './useBottomScrollListener'; export { default as useNavigationState } from './useNavigationState'; diff --git a/apps/site/hooks/react-client/useBottomScrollListener.ts b/apps/site/hooks/react-client/useBottomScrollListener.ts deleted file mode 100644 index 7c65471159701..0000000000000 --- a/apps/site/hooks/react-client/useBottomScrollListener.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { useState, useEffect } from 'react'; - -import { debounce } from '@/util/debounce'; - -type CallbackFunction = () => void; - -const useBottomScrollListener = ( - callback: CallbackFunction, - debounceTime = 300 -) => { - const [bottomReached, setBottomReached] = useState(false); - - const debouncedCallback = debounce(callback, debounceTime); - - const handleScroll = () => { - const scrollTop = document.documentElement.scrollTop; - const windowHeight = window.innerHeight; - const height = document.documentElement.scrollHeight; - - const bottomOfWindow = Math.ceil(scrollTop + windowHeight) >= height; - - if (bottomOfWindow) { - setBottomReached(true); - debouncedCallback(); - } else { - setBottomReached(false); - } - }; - - useEffect(() => { - window.addEventListener('scroll', handleScroll, { passive: true }); - - return () => window.removeEventListener('scroll', handleScroll); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - - return bottomReached; -}; - -export default useBottomScrollListener; diff --git a/apps/site/hooks/react-client/useClickOutside.ts b/apps/site/hooks/react-client/useClickOutside.ts deleted file mode 100644 index 0d64cf8c2e5ce..0000000000000 --- a/apps/site/hooks/react-client/useClickOutside.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { RefObject } from 'react'; -import { useEffect } from 'react'; - -const useClickOutside = ( - ref: RefObject, - fn: () => void -) => { - useEffect(() => { - const element = ref?.current; - const handleClickOutside = (event: Event) => { - if (element && !element.contains(event.target as Node)) { - fn(); - } - }; - document.addEventListener('click', handleClickOutside); - return () => document.removeEventListener('click', handleClickOutside); - }, [ref, fn]); -}; - -export default useClickOutside; diff --git a/apps/site/hooks/react-client/useKeyboardCommands.ts b/apps/site/hooks/react-client/useKeyboardCommands.ts deleted file mode 100644 index 89b4513edbd85..0000000000000 --- a/apps/site/hooks/react-client/useKeyboardCommands.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { useEffect } from 'react'; - -type KeyboardCommand = 'cmd-k' | 'escape' | 'down' | 'up' | 'enter'; - -type KeyboardCommandCallback = (key: KeyboardCommand) => void; - -const useKeyboardCommands = (fn: KeyboardCommandCallback) => { - useEffect(() => { - const handleKeyDown = (event: KeyboardEvent) => { - // Detect ⌘ + k on Mac, Ctrl + k on Windows - if ((event.metaKey || event.ctrlKey) && event.key === 'k') { - event.preventDefault(); - fn('cmd-k'); - } - - switch (event.key) { - case 'Escape': - fn('escape'); - break; - case 'Enter': - fn('enter'); - break; - case 'ArrowDown': - fn('down'); - break; - case 'ArrowUp': - fn('up'); - break; - } - }; - - document.addEventListener('keydown', handleKeyDown); - - return () => document.removeEventListener('keydown', handleKeyDown); - }, [fn]); -}; - -export default useKeyboardCommands; diff --git a/apps/site/next.constants.mjs b/apps/site/next.constants.mjs index 9aa7059d1fb4b..bc9ee3a50fc16 100644 --- a/apps/site/next.constants.mjs +++ b/apps/site/next.constants.mjs @@ -131,8 +131,7 @@ export const EXTERNAL_LINKS_SITEMAP = [ * @see https://docs.oramasearch.com/open-source/usage/search/introduction */ export const DEFAULT_ORAMA_QUERY_PARAMS = { - mode: 'fulltext', - limit: 8, + limit: 25, threshold: 0, boost: { pageSectionTitle: 4, @@ -144,6 +143,15 @@ export const DEFAULT_ORAMA_QUERY_PARAMS = { }, }; +/** + * The initial Orama Cloud chat suggestions visible in the empty state of the search box. + */ +export const DEFAULT_ORAMA_SUGGESTIONS = [ + 'How to install Node.js?', + 'How to create an HTTP server?', + 'Upgrading Node.js version', +]; + /** * The default batch size to use when syncing Orama Cloud */ diff --git a/apps/site/next.mdx.use.mjs b/apps/site/next.mdx.use.mjs index 54191ff55b952..67c8adaf9082f 100644 --- a/apps/site/next.mdx.use.mjs +++ b/apps/site/next.mdx.use.mjs @@ -17,7 +17,6 @@ import SourceButton from './components/Downloads/Release/SourceButton'; import VerifyingBinariesLink from './components/Downloads/Release/VerifyingBinariesLink'; import VersionDropdown from './components/Downloads/Release/VersionDropdown'; import UpcomingMeetings from './components/MDX/Calendar/UpcomingMeetings'; -import SearchPage from './components/MDX/SearchPage'; import WithBadge from './components/withBadge'; import WithBanner from './components/withBanner'; import WithNodeRelease from './components/withNodeRelease'; @@ -39,8 +38,6 @@ export const mdxComponents = { DownloadButton: DownloadButton, // Renders a Download Link DownloadLink: DownloadLink, - // Renders a Search Page - SearchPage: SearchPage, // Renders an container for Upcoming Node.js Meetings UpcomingMeetings: UpcomingMeetings, // Group of components that enable you to select versions for Node.js diff --git a/apps/site/next.orama.mjs b/apps/site/next.orama.mjs deleted file mode 100644 index 5a7c150d2b777..0000000000000 --- a/apps/site/next.orama.mjs +++ /dev/null @@ -1,34 +0,0 @@ -import { Highlight } from '@orama/highlight'; -import { OramaClient } from '@oramacloud/client'; - -import { - DEFAULT_ORAMA_QUERY_PARAMS, - ORAMA_CLOUD_ENDPOINT, - ORAMA_CLOUD_API_KEY, -} from './next.constants.mjs'; - -// Provides a safe-wrapper that initialises the OramaClient -// based on the presence of environmental variables -const { search, getInitialFacets } = (() => { - if (ORAMA_CLOUD_ENDPOINT && ORAMA_CLOUD_API_KEY) { - const orama = new OramaClient({ - endpoint: ORAMA_CLOUD_ENDPOINT, - api_key: ORAMA_CLOUD_API_KEY, - }); - - return { - search: orama.search.bind(orama), - getInitialFacets: async () => - orama.search({ term: '', ...DEFAULT_ORAMA_QUERY_PARAMS }).catch(), - }; - } - - return { search: async () => null, getInitialFacets: async () => null }; -})(); - -export { search, getInitialFacets }; - -export const highlighter = new Highlight({ - CSSClass: 'font-bold', - HTMLTag: 'span', -}); diff --git a/apps/site/package.json b/apps/site/package.json index ec72c7ccfb008..3b577d456e9de 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -28,8 +28,8 @@ "@node-core/ui-components": "*", "@nodevu/core": "0.3.0", "@opentelemetry/api": "1.9.0", - "@orama/highlight": "0.1.6", - "@oramacloud/client": "1.3.16", + "@orama/react-components": "^0.1.23", + "@oramacloud/client": "^1.3.16", "@radix-ui/react-accessible-icon": "^1.1.0", "@radix-ui/react-avatar": "^1.1.1", "@radix-ui/react-dropdown-menu": "^2.1.2", diff --git a/apps/site/pages/en/search.mdx b/apps/site/pages/en/search.mdx deleted file mode 100644 index ac57c0e414803..0000000000000 --- a/apps/site/pages/en/search.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -layout: search -title: Search Results ---- - - diff --git a/apps/site/pages/fa/search.mdx b/apps/site/pages/fa/search.mdx deleted file mode 100644 index 789c12514cdfa..0000000000000 --- a/apps/site/pages/fa/search.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -layout: search -title: نتایج جستجو ---- - - diff --git a/apps/site/pages/fr/search.mdx b/apps/site/pages/fr/search.mdx deleted file mode 100644 index e1e31021bab81..0000000000000 --- a/apps/site/pages/fr/search.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -layout: search -title: Résultats de la recherche ---- - - diff --git a/apps/site/pages/id/search.mdx b/apps/site/pages/id/search.mdx deleted file mode 100644 index 7b4a2ae44d4c4..0000000000000 --- a/apps/site/pages/id/search.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -layout: search -title: Hasil Pencarian ---- - - diff --git a/apps/site/pages/ja/search.mdx b/apps/site/pages/ja/search.mdx deleted file mode 100644 index ad7e918069f96..0000000000000 --- a/apps/site/pages/ja/search.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -layout: search -title: 検索結果 ---- - - diff --git a/apps/site/pages/ko/search.mdx b/apps/site/pages/ko/search.mdx deleted file mode 100644 index e9eaeb4f3fb9e..0000000000000 --- a/apps/site/pages/ko/search.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -layout: search -title: 검색결과 ---- - - diff --git a/apps/site/pages/pt/search.mdx b/apps/site/pages/pt/search.mdx deleted file mode 100644 index 8760cc8d396e3..0000000000000 --- a/apps/site/pages/pt/search.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -layout: search -title: Resultados da Pesquisa ---- - - diff --git a/apps/site/pages/tr/search.mdx b/apps/site/pages/tr/search.mdx deleted file mode 100644 index 5db97e62c1b65..0000000000000 --- a/apps/site/pages/tr/search.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -layout: search -title: Arama Sonuçları ---- - - diff --git a/apps/site/pages/uk/search.mdx b/apps/site/pages/uk/search.mdx deleted file mode 100644 index df80d434d9e4c..0000000000000 --- a/apps/site/pages/uk/search.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -layout: search -title: Результати пошуку ---- - - diff --git a/apps/site/pages/zh-cn/search.mdx b/apps/site/pages/zh-cn/search.mdx deleted file mode 100644 index c33e34ff57dcd..0000000000000 --- a/apps/site/pages/zh-cn/search.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -layout: search -title: 搜索结果 ---- - - diff --git a/apps/site/pages/zh-tw/search.mdx b/apps/site/pages/zh-tw/search.mdx deleted file mode 100644 index d484b08ae27f5..0000000000000 --- a/apps/site/pages/zh-tw/search.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -layout: search -title: 搜尋結果 ---- - - diff --git a/apps/site/scripts/orama-search/get-documents.mjs b/apps/site/scripts/orama-search/get-documents.mjs index 617ea11301a91..73f7dfd71a010 100644 --- a/apps/site/scripts/orama-search/get-documents.mjs +++ b/apps/site/scripts/orama-search/get-documents.mjs @@ -46,6 +46,9 @@ const splitIntoSections = markdownContent => { })); }; +const uppercaseFirst = string => + string.charAt(0).toUpperCase() + string.slice(1); + const getPageTitle = data => data.title || data.pathname @@ -63,11 +66,12 @@ export const siteContent = [...pageData, ...apiData] const siteSection = pathname.split('/').shift(); const subSections = splitIntoSections(markdownContent); - return subSections.map(section => { + const path = `${pathname}#${slug(section.pageSectionTitle)}`; + return { - path: pathname + '#' + slug(section.pageSectionTitle), - siteSection, + path, + siteSection: uppercaseFirst(siteSection), pageTitle: title, ...section, }; diff --git a/apps/site/types/index.ts b/apps/site/types/index.ts index 28cee2cbc8130..0c7289d93d4ce 100644 --- a/apps/site/types/index.ts +++ b/apps/site/types/index.ts @@ -10,5 +10,4 @@ export * from './redirects'; export * from './server'; export * from './github'; export * from './calendar'; -export * from './search'; export * from './author'; diff --git a/apps/site/types/search.ts b/apps/site/types/search.ts deleted file mode 100644 index 03ac4e67a4a18..0000000000000 --- a/apps/site/types/search.ts +++ /dev/null @@ -1,8 +0,0 @@ -export interface SearchDoc { - id: string; - path: string; - pageTitle: string; - siteSection: string; - pageSectionTitle: string; - pageSectionContent: string; -} diff --git a/apps/site/util/searchUtils.ts b/apps/site/util/searchUtils.ts deleted file mode 100644 index 6c5e1cb243b2c..0000000000000 --- a/apps/site/util/searchUtils.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { Result } from '@orama/orama'; - -import { BASE_URL } from '@/next.constants.mjs'; -import type { SearchDoc } from '@/types'; - -export const searchHitToLinkPath = (hit: Result) => { - const isAPIResult = hit.document.siteSection.toLowerCase() === 'docs'; - const basePath = isAPIResult ? BASE_URL : ''; - return `${basePath}/${hit.document.path}`; -}; diff --git a/package-lock.json b/package-lock.json index ee3f6dd225905..a8aa8c2de91e1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,8 +39,8 @@ "@node-core/website-i18n": "*", "@nodevu/core": "0.3.0", "@opentelemetry/api": "1.9.0", - "@orama/highlight": "0.1.6", - "@oramacloud/client": "1.3.16", + "@orama/react-components": "^0.1.23", + "@oramacloud/client": "^1.3.16", "@radix-ui/react-accessible-icon": "^1.1.0", "@radix-ui/react-avatar": "^1.1.1", "@radix-ui/react-dropdown-menu": "^2.1.2", @@ -2110,6 +2110,21 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@lit-labs/ssr-dom-shim": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.1.tgz", + "integrity": "sha512-wx4aBmgeGvFmOKucFKY+8VFJSYZxs9poN3SDNQFF6lT6NrQUnHiPB2PWz2sc4ieEcAaYYzN+1uWahEeTq2aRIQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@lit/reactive-element": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz", + "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.2.0" + } + }, "node_modules/@mdx-js/mdx": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.0.tgz", @@ -2797,15 +2812,21 @@ "node": ">=14" } }, - "node_modules/@orama/highlight": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@orama/highlight/-/highlight-0.1.6.tgz", - "integrity": "sha512-6Va8paStIoVy5algYDQu1hU0NUCkcrBx7FSt+0Lllp4d2VA1aVi6ACQ7xoINYls8sDZqg6vXf2lj4YDlVamBtw==", - "license": "Apache-2.0", + "node_modules/@orama/cuid2": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@orama/cuid2/-/cuid2-2.2.3.tgz", + "integrity": "sha512-Lcak3chblMejdlSHgYU2lS2cdOhDpU6vkfIJH4m+YKvqQyLqs1bB8+w6NT1MG5bO12NUK2GFc34Mn2xshMIQ1g==", + "license": "MIT", "dependencies": { - "@orama/orama": "^2.0.0-beta.1" + "@noble/hashes": "^1.1.5" } }, + "node_modules/@orama/highlight": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@orama/highlight/-/highlight-0.1.8.tgz", + "integrity": "sha512-w3TvtWUKYlf/NoujoyEs38nJRi1lkwxdOXntXDYB9cfHzx+s+iPrps70YwFRRJu9TcHW8ffz503b0E6aAfsuvg==", + "license": "Apache-2.0" + }, "node_modules/@orama/orama": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/@orama/orama/-/orama-2.1.1.tgz", @@ -2815,6 +2836,71 @@ "node": ">= 16.0.0" } }, + "node_modules/@orama/react-components": { + "version": "0.1.23", + "resolved": "https://registry.npmjs.org/@orama/react-components/-/react-components-0.1.23.tgz", + "integrity": "sha512-LmSO64xN1bhOBnqVbx+FzpFmWvcy+n/s0Y/keQdU1iejSEFgp+JZCmcgI7B2DS+Xa4VCQOVzYxf6TD11eKc4Tg==", + "license": "Apache-2.0", + "dependencies": { + "@orama/wc-components": "0.1.23" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.3.1", + "react-dom": "^17.0.0 || ^18.3.1" + } + }, + "node_modules/@orama/wc-components": { + "version": "0.1.23", + "resolved": "https://registry.npmjs.org/@orama/wc-components/-/wc-components-0.1.23.tgz", + "integrity": "sha512-O4jWSC6XeGS+07l2bkBGPGGXq1A6wG/2nPbBi5WyVhLGY4oceq3/c5l4ogHOF9G4OB+217mKN4VU3nmRosFJtQ==", + "license": "Apache-2.0", + "dependencies": { + "@orama/highlight": "^0.1.6", + "@orama/orama": "^3.0.0", + "@orama/switch": "^3.0.0", + "@oramacloud/client": "^2.1.0", + "@phosphor-icons/webcomponents": "^2.1.5", + "@stencil/core": "^4.19.0", + "@stencil/store": "^2.0.16", + "dompurify": "^3.1.6", + "highlight.js": "^11.10.0", + "markdown-it": "^14.1.0", + "marked": "^13.0.2", + "marked-highlight": "^2.1.3", + "shiki": "^1.10.3", + "sse.js": "^2.5.0" + } + }, + "node_modules/@orama/wc-components/node_modules/@orama/orama": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@orama/orama/-/orama-3.0.2.tgz", + "integrity": "sha512-1dfxup89K2DB2bbfx9rXyr/IAvhCKbH79lZCXVh5HWvdJ9g0VAvPIs3+UzjiyOdycEHYTbYundCTN6+Ygj3z4w==", + "license": "Apache-2.0", + "engines": { + "node": ">= 16.0.0" + } + }, + "node_modules/@orama/wc-components/node_modules/@orama/switch": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@orama/switch/-/switch-3.0.2.tgz", + "integrity": "sha512-ui59rKC67rqF5rg6ncQhHCl11LDw4WZJfhsqJ2UHxxsh3S5F7LsT3a8/5MZDGKkFtj3IVqIRKF+pi0flMJxuTQ==", + "license": "Apache-2.0", + "peerDependencies": { + "@orama/orama": "3.0.2", + "@oramacloud/client": "^2.1.1" + } + }, + "node_modules/@orama/wc-components/node_modules/@oramacloud/client": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@oramacloud/client/-/client-2.1.4.tgz", + "integrity": "sha512-uNPFs4wq/iOPbggCwTkVNbIr64Vfd7ZS/h+cricXVnzXWocjDTfJ3wLL4lr0qiSu41g8z+eCAGBqJ30RO2O4AA==", + "license": "ISC", + "dependencies": { + "@orama/cuid2": "^2.2.3", + "@orama/orama": "^3.0.0", + "lodash": "^4.17.21" + } + }, "node_modules/@oramacloud/client": { "version": "1.3.16", "resolved": "https://registry.npmjs.org/@oramacloud/client/-/client-1.3.16.tgz", @@ -2838,6 +2924,15 @@ "@noble/hashes": "^1.1.5" } }, + "node_modules/@phosphor-icons/webcomponents": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@phosphor-icons/webcomponents/-/webcomponents-2.1.5.tgz", + "integrity": "sha512-JcvQkZxvcX2jK+QCclm8+e8HXqtdFW9xV4/kk2aL9Y3dJA2oQVt+pzbv1orkumz3rfx4K9mn9fDoMr1He1yr7Q==", + "license": "MIT", + "dependencies": { + "lit": "^3" + } + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -3812,6 +3907,32 @@ "@sinonjs/commons": "^3.0.0" } }, + "node_modules/@stencil/core": { + "version": "4.22.3", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.22.3.tgz", + "integrity": "sha512-dYaletX938WgEA2oMROLdh8wpUn1MgBx2zg5kYqwuUR8aua4Gy9EqGQ3zBu1AvL5MzLlZC+lMlxe/g5Dg1ldpw==", + "license": "MIT", + "bin": { + "stencil": "bin/stencil" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=7.10.0" + } + }, + "node_modules/@stencil/store": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@stencil/store/-/store-2.0.16.tgz", + "integrity": "sha512-ET3EByKlmNyTA8O+tcp5YWePOiVnPIiuoiIaxTrf3zFFVo7JWVsVoak9IE0UTn3MkIM0ubR9lgxvi70uN588/A==", + "license": "MIT", + "engines": { + "node": ">=12.0.0", + "npm": ">=6.0.0" + }, + "peerDependencies": { + "@stencil/core": ">=2.0.0 || >=3.0.0 || >= 4.0.0-beta.0 || >= 4.0.0" + } + }, "node_modules/@storybook/addon-controls": { "version": "8.4.6", "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.4.6.tgz", @@ -4983,6 +5104,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT" + }, "node_modules/@types/unist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", @@ -8277,6 +8404,15 @@ "url": "https://github.com/fb55/domhandler?sponsor=1" } }, + "node_modules/dompurify": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.1.tgz", + "integrity": "sha512-NBHEsc0/kzRYQd+AY6HR6B/IgsqzBABrqJbpCDQII/OK6h7B7LXzweZTDsqSW2LkTRpoxf18YUP+YjGySk6B3w==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, "node_modules/domutils": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", @@ -11283,6 +11419,15 @@ "he": "bin/he" } }, + "node_modules/highlight.js": { + "version": "11.10.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.10.0.tgz", + "integrity": "sha512-SYVnVFswQER+zu1laSya563s+F8VDGt7o35d4utbamowvUNLLMovFqwCLSocpZTz3MgaSRA1IbqRWZv97dtErQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/homedir-polyfill": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", @@ -14048,6 +14193,15 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "license": "MIT" }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, "node_modules/lint-staged": { "version": "15.2.10", "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.10.tgz", @@ -14287,6 +14441,37 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/lit": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.2.1.tgz", + "integrity": "sha512-1BBa1E/z0O9ye5fZprPtdqnc0BFzxIxTTOO/tQFmyC/hj1O3jL4TfmLBw0WEwjAokdLwpclkvGgDJwTIh0/22w==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit/reactive-element": "^2.0.4", + "lit-element": "^4.1.0", + "lit-html": "^3.2.0" + } + }, + "node_modules/lit-element": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.1.1.tgz", + "integrity": "sha512-HO9Tkkh34QkTeUmEdNYhMT8hzLid7YlMlATSi1q4q17HE5d9mrrEHJ/o8O2D0cMi182zK1F3v7x0PWFjrhXFew==", + "license": "BSD-3-Clause", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.2.0", + "@lit/reactive-element": "^2.0.4", + "lit-html": "^3.2.0" + } + }, + "node_modules/lit-html": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.2.1.tgz", + "integrity": "sha512-qI/3lziaPMSKsrwlxH/xMgikhQ0EGOX2ICU73Bi/YHFvz2j/yMCIrw4+puF2IpQ4+upd3EWbvnHM9+PnJn48YA==", + "license": "BSD-3-Clause", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, "node_modules/load-plugin": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/load-plugin/-/load-plugin-6.0.3.tgz", @@ -14718,6 +14903,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, "node_modules/markdown-table": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", @@ -14728,6 +14930,27 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/marked": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/marked/-/marked-13.0.3.tgz", + "integrity": "sha512-rqRix3/TWzE9rIoFGIn8JmsVfhiuC8VIQ8IdX5TfzmeBucdY05/0UlzKaw0eVtpcN/OdVFpBk7CjKGo9iHJ/zA==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/marked-highlight": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/marked-highlight/-/marked-highlight-2.2.1.tgz", + "integrity": "sha512-SiCIeEiQbs9TxGwle9/OwbOejHCZsohQRaNTY2u8euEXYt2rYUFoiImUirThU3Gd/o6Q1gHGtH9qloHlbJpNIA==", + "license": "MIT", + "peerDependencies": { + "marked": ">=4 <16" + } + }, "node_modules/mathml-tag-names": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", @@ -17934,6 +18157,15 @@ "node": ">=6" } }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/pure-rand": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", @@ -20451,6 +20683,12 @@ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "license": "BSD-3-Clause" }, + "node_modules/sse.js": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/sse.js/-/sse.js-2.5.0.tgz", + "integrity": "sha512-I7zYndqOOkNpz9KIdFZ8c8A7zs1YazNewBr8Nsi/tqThfJkVPuP1q7UE2h4B0RwoWZxbBYpd06uoW3NI3SaZXg==", + "license": "Apache-2.0" + }, "node_modules/stable-hash": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.4.tgz", From 1563d8139a81587046f4f6cc5298c2f9a6a8532e Mon Sep 17 00:00:00 2001 From: Farid Date: Mon, 16 Dec 2024 18:18:54 +0530 Subject: [PATCH 59/65] Fix button focus (#7287) * add changes to MetaBar index.modul.css * add href to button * remove unrelated changes * apply changes to CodeBox file & Button file * add change to CodeBox file * add changes to CodeBox & Button component * import KeyboardEvent & MouseEvent from react at Button index.file * refactor: consolidate React imports into a single line * refactor: consolidate React imports into a single line * refactor: Button component & CodeBox compnent * Update: Button component modified in case of type-saftey at some part * omit unnecessary comment-lines, handle-proper naming * omit unnecessary comment-lines, handle-proper naming * Update apps/site/components/Common/Button/index.tsx Signed-off-by: Claudio W --------- Signed-off-by: Claudio W Co-authored-by: Claudio W --- apps/site/components/Common/Button/index.tsx | 63 ++++++++++++++++---- 1 file changed, 50 insertions(+), 13 deletions(-) diff --git a/apps/site/components/Common/Button/index.tsx b/apps/site/components/Common/Button/index.tsx index cb7f77eed0c89..804cc296ecf46 100644 --- a/apps/site/components/Common/Button/index.tsx +++ b/apps/site/components/Common/Button/index.tsx @@ -1,5 +1,12 @@ +'use client'; + import classNames from 'classnames'; -import type { FC, AnchorHTMLAttributes } from 'react'; +import type { + FC, + AnchorHTMLAttributes, + KeyboardEvent, + MouseEvent, +} from 'react'; import Link from '@/components/Link'; @@ -7,7 +14,6 @@ import styles from './index.module.css'; type ButtonProps = AnchorHTMLAttributes & { kind?: 'neutral' | 'primary' | 'secondary' | 'special'; - // We have an extra `disabled` prop as we simulate a button disabled?: boolean; }; @@ -17,17 +23,48 @@ const Button: FC = ({ href = undefined, children, className, + onClick, ...props -}) => ( - - {children} - -); +}) => { + const onKeyDownHandler = (e: KeyboardEvent) => { + if (disabled) { + e.preventDefault(); + return; + } + + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault(); + if (typeof onClick === 'function') { + onClick(e as unknown as MouseEvent); + } + } + }; + + const onClickHandler = (e: MouseEvent) => { + if (disabled) { + e.preventDefault(); + return; + } + + if (typeof onClick === 'function') { + onClick(e); + } + }; + + return ( + + {children} + + ); +}; export default Button; From 9e18841cb57fae9f8b91a4ce9dd3c953b450e065 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 20:49:03 +0100 Subject: [PATCH 60/65] meta: bump @oramacloud/client from 1.3.16 to 2.1.4 in the orama group across 1 directory (#7331) meta: bump @oramacloud/client in the orama group across 1 directory Bumps the orama group with 1 update in the / directory: @oramacloud/client. Updates `@oramacloud/client` from 1.3.16 to 2.1.4 --- updated-dependencies: - dependency-name: "@oramacloud/client" dependency-type: direct:production update-type: version-update:semver-major dependency-group: orama ... 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 | 256 +++++++---------------------------------- 2 files changed, 43 insertions(+), 215 deletions(-) diff --git a/apps/site/package.json b/apps/site/package.json index 3b577d456e9de..bfbfc9a615949 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -29,7 +29,7 @@ "@nodevu/core": "0.3.0", "@opentelemetry/api": "1.9.0", "@orama/react-components": "^0.1.23", - "@oramacloud/client": "^1.3.16", + "@oramacloud/client": "^2.1.4", "@radix-ui/react-accessible-icon": "^1.1.0", "@radix-ui/react-avatar": "^1.1.1", "@radix-ui/react-dropdown-menu": "^2.1.2", diff --git a/package-lock.json b/package-lock.json index a8aa8c2de91e1..8560b0f8a2746 100644 --- a/package-lock.json +++ b/package-lock.json @@ -40,7 +40,7 @@ "@nodevu/core": "0.3.0", "@opentelemetry/api": "1.9.0", "@orama/react-components": "^0.1.23", - "@oramacloud/client": "^1.3.16", + "@oramacloud/client": "^2.1.4", "@radix-ui/react-accessible-icon": "^1.1.0", "@radix-ui/react-avatar": "^1.1.1", "@radix-ui/react-dropdown-menu": "^2.1.2", @@ -350,6 +350,7 @@ "version": "7.25.9", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -392,6 +393,7 @@ "version": "7.26.2", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz", "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", + "devOptional": true, "license": "MIT", "dependencies": { "@babel/types": "^7.26.0" @@ -693,6 +695,7 @@ "version": "7.26.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "devOptional": true, "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.25.9", @@ -2828,10 +2831,9 @@ "license": "Apache-2.0" }, "node_modules/@orama/orama": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@orama/orama/-/orama-2.1.1.tgz", - "integrity": "sha512-euTV/2kya290SNkl5m8e/H1na8iDygk74nNtl4E0YZNyYIrEMwE1JwamoroMKGZw2Uz+in/8gH3m1+2YfP0j1w==", - "license": "Apache-2.0", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@orama/orama/-/orama-3.0.4.tgz", + "integrity": "sha512-ziYjwoxUty8WEvgnUZNeJlCHkYplxWFxjNVXWaNIh1wvQ37tl/qkM0kyLXiwHgSxrIPjuv6A2TwgKjjtwhP3jg==", "engines": { "node": ">= 16.0.0" } @@ -2890,40 +2892,16 @@ "@oramacloud/client": "^2.1.1" } }, - "node_modules/@orama/wc-components/node_modules/@oramacloud/client": { + "node_modules/@oramacloud/client": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/@oramacloud/client/-/client-2.1.4.tgz", "integrity": "sha512-uNPFs4wq/iOPbggCwTkVNbIr64Vfd7ZS/h+cricXVnzXWocjDTfJ3wLL4lr0qiSu41g8z+eCAGBqJ30RO2O4AA==", - "license": "ISC", "dependencies": { "@orama/cuid2": "^2.2.3", "@orama/orama": "^3.0.0", "lodash": "^4.17.21" } }, - "node_modules/@oramacloud/client": { - "version": "1.3.16", - "resolved": "https://registry.npmjs.org/@oramacloud/client/-/client-1.3.16.tgz", - "integrity": "sha512-WOc7hcg40x5OZb1rPiH/qSLeDb1hzCy4jVIV1wSfwni/ZQ4cHRyDKuMda5iyjF3A+ZgQfH1P5Oqi03cZSZw98g==", - "license": "ISC", - "dependencies": { - "@orama/orama": "^2.0.16", - "@paralleldrive/cuid2": "^2.2.1", - "lodash": "^4.17.21", - "openai": "^4.24.1", - "react": "^18.2.0", - "vue": "^3.4.25" - } - }, - "node_modules/@paralleldrive/cuid2": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz", - "integrity": "sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "^1.1.5" - } - }, "node_modules/@phosphor-icons/webcomponents": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@phosphor-icons/webcomponents/-/webcomponents-2.1.5.tgz", @@ -5012,21 +4990,12 @@ "version": "22.10.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.1.tgz", "integrity": "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==", + "devOptional": true, "license": "MIT", "dependencies": { "undici-types": "~6.20.0" } }, - "node_modules/@types/node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "form-data": "^4.0.0" - } - }, "node_modules/@types/parse-json": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", @@ -5697,6 +5666,8 @@ "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.12.tgz", "integrity": "sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@babel/parser": "^7.25.3", "@vue/shared": "3.5.12", @@ -5709,13 +5680,17 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "license": "MIT" + "license": "MIT", + "optional": true, + "peer": true }, "node_modules/@vue/compiler-dom": { "version": "3.5.12", "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.12.tgz", "integrity": "sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@vue/compiler-core": "3.5.12", "@vue/shared": "3.5.12" @@ -5726,6 +5701,8 @@ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.12.tgz", "integrity": "sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@babel/parser": "^7.25.3", "@vue/compiler-core": "3.5.12", @@ -5742,13 +5719,17 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "license": "MIT" + "license": "MIT", + "optional": true, + "peer": true }, "node_modules/@vue/compiler-ssr": { "version": "3.5.12", "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.12.tgz", "integrity": "sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.12", "@vue/shared": "3.5.12" @@ -5759,6 +5740,8 @@ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.12.tgz", "integrity": "sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@vue/shared": "3.5.12" } @@ -5768,6 +5751,8 @@ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.12.tgz", "integrity": "sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@vue/reactivity": "3.5.12", "@vue/shared": "3.5.12" @@ -5778,6 +5763,8 @@ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.12.tgz", "integrity": "sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@vue/reactivity": "3.5.12", "@vue/runtime-core": "3.5.12", @@ -5790,6 +5777,8 @@ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.12.tgz", "integrity": "sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@vue/compiler-ssr": "3.5.12", "@vue/shared": "3.5.12" @@ -5997,18 +5986,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, "node_modules/acorn": { "version": "8.14.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", @@ -6077,18 +6054,6 @@ "node": ">= 6.0.0" } }, - "node_modules/agentkeepalive": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", - "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", - "license": "MIT", - "dependencies": { - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, "node_modules/ajv": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", @@ -6489,6 +6454,7 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, "license": "MIT" }, "node_modules/at-least-node": { @@ -7443,6 +7409,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" @@ -7870,6 +7837,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "devOptional": true, "license": "MIT" }, "node_modules/cz-conventional-changelog": { @@ -8188,6 +8156,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.4.0" @@ -10046,15 +10015,6 @@ "node": ">=0.10.0" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/eventemitter3": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", @@ -10664,6 +10624,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "dev": true, "license": "MIT", "dependencies": { "asynckit": "^0.4.0", @@ -10674,12 +10635,6 @@ "node": ">= 6" } }, - "node_modules/form-data-encoder": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", - "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==", - "license": "MIT" - }, "node_modules/format": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", @@ -10689,19 +10644,6 @@ "node": ">=0.4.x" } }, - "node_modules/formdata-node": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", - "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", - "license": "MIT", - "dependencies": { - "node-domexception": "1.0.0", - "web-streams-polyfill": "4.0.0-beta.3" - }, - "engines": { - "node": ">= 12.20" - } - }, "node_modules/fraction.js": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", @@ -11645,15 +11587,6 @@ "node": ">=10.17.0" } }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.0.0" - } - }, "node_modules/husky": { "version": "9.1.7", "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", @@ -14843,6 +14776,7 @@ "version": "0.30.13", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.13.tgz", "integrity": "sha512-8rYBO+MsWkgjDSOvLomYnzhdwEG51olQ4zL5KXnNJWV5MNmrb4rTZdrtkhxjnD/QyZUqR/Z/XDsUs/4ej2nx0g==", + "devOptional": true, "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" @@ -16207,6 +16141,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "devOptional": true, "license": "MIT", "engines": { "node": ">= 0.6" @@ -16216,6 +16151,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "devOptional": true, "license": "MIT", "dependencies": { "mime-db": "1.52.0" @@ -16586,67 +16522,6 @@ "dev": true, "license": "MIT" }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "license": "MIT", - "engines": { - "node": ">=10.5.0" - } - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -16986,47 +16861,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/openai": { - "version": "4.73.0", - "resolved": "https://registry.npmjs.org/openai/-/openai-4.73.0.tgz", - "integrity": "sha512-NZstV77w3CEol9KQTRBRQ15+Sw6nxVTicAULSjYO4wn9E5gw72Mtp3fAVaBFXyyVPws4241YmFG6ya4L8v03tA==", - "license": "Apache-2.0", - "dependencies": { - "@types/node": "^18.11.18", - "@types/node-fetch": "^2.6.4", - "abort-controller": "^3.0.0", - "agentkeepalive": "^4.2.1", - "form-data-encoder": "1.7.2", - "formdata-node": "^4.3.2", - "node-fetch": "^2.6.7" - }, - "bin": { - "openai": "bin/cli" - }, - "peerDependencies": { - "zod": "^3.23.8" - }, - "peerDependenciesMeta": { - "zod": { - "optional": true - } - } - }, - "node_modules/openai/node_modules/@types/node": { - "version": "18.19.65", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.65.tgz", - "integrity": "sha512-Ay5BZuO1UkTmVHzZJNvZKw/E+iB3GQABb6kijEz89w2JrfhNA+M/ebp18pfz9Gqe9ywhMC8AA8yC01lZq48J+Q==", - "license": "MIT", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/openai/node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "license": "MIT" - }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -22509,6 +22343,7 @@ "version": "6.20.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "devOptional": true, "license": "MIT" }, "node_modules/unified": { @@ -23233,6 +23068,8 @@ "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.12.tgz", "integrity": "sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.12", "@vue/compiler-sfc": "3.5.12", @@ -23303,15 +23140,6 @@ "defaults": "^1.0.3" } }, - "node_modules/web-streams-polyfill": { - "version": "4.0.0-beta.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", - "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", From 3bec78a754e71b0fe40d13a92566cf79bea689aa Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 10:28:07 -0600 Subject: [PATCH 61/65] [automated]: crowdin sync (#7332) * 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> * Update apps/site/pages/es/about/index.mdx Signed-off-by: Brian Muenzenmeyer --------- Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Signed-off-by: Brian Muenzenmeyer Co-authored-by: Crowdin Bot Co-authored-by: bmuenzenmeyer Co-authored-by: Brian Muenzenmeyer --- apps/site/pages/es/about/branding.mdx | 84 ++++ .../es/about/get-involved/collab-summit.md | 17 + .../pages/es/about/get-involved/events.mdx | 16 + .../site/pages/es/about/get-involved/index.md | 36 ++ apps/site/pages/es/about/governance.md | 31 ++ apps/site/pages/es/about/index.mdx | 63 +++ .../site/pages/es/about/previous-releases.mdx | 25 ++ .../pages/es/about/security-reporting.mdx | 67 +++ .../pages/es/download/package-manager/all.md | 393 ++++++++++++++++++ .../es/download/package-manager/current.mdx | 24 ++ .../es/download/package-manager/index.mdx | 24 ++ .../es/download/prebuilt-binaries/current.mdx | 24 ++ .../es/download/prebuilt-binaries/index.mdx | 24 ++ .../download/prebuilt-installer/current.mdx | 26 ++ .../es/download/prebuilt-installer/index.mdx | 26 ++ .../pages/es/download/source-code/current.mdx | 24 ++ .../pages/es/download/source-code/index.mdx | 24 ++ apps/site/pages/es/index.mdx | 249 +++++------ packages/i18n/locales/es.json | 327 +++++++++++++++ 19 files changed, 1382 insertions(+), 122 deletions(-) create mode 100644 apps/site/pages/es/about/branding.mdx create mode 100644 apps/site/pages/es/about/get-involved/collab-summit.md create mode 100644 apps/site/pages/es/about/get-involved/events.mdx create mode 100644 apps/site/pages/es/about/get-involved/index.md create mode 100644 apps/site/pages/es/about/governance.md create mode 100644 apps/site/pages/es/about/index.mdx create mode 100644 apps/site/pages/es/about/previous-releases.mdx create mode 100644 apps/site/pages/es/about/security-reporting.mdx create mode 100644 apps/site/pages/es/download/package-manager/all.md create mode 100644 apps/site/pages/es/download/package-manager/current.mdx create mode 100644 apps/site/pages/es/download/package-manager/index.mdx create mode 100644 apps/site/pages/es/download/prebuilt-binaries/current.mdx create mode 100644 apps/site/pages/es/download/prebuilt-binaries/index.mdx create mode 100644 apps/site/pages/es/download/prebuilt-installer/current.mdx create mode 100644 apps/site/pages/es/download/prebuilt-installer/index.mdx create mode 100644 apps/site/pages/es/download/source-code/current.mdx create mode 100644 apps/site/pages/es/download/source-code/index.mdx create mode 100644 packages/i18n/locales/es.json diff --git a/apps/site/pages/es/about/branding.mdx b/apps/site/pages/es/about/branding.mdx new file mode 100644 index 0000000000000..08ccf552e7e9d --- /dev/null +++ b/apps/site/pages/es/about/branding.mdx @@ -0,0 +1,84 @@ +--- +title: Marca de Node.js +layout: about +--- + +Marca de Node.js + +Por favor revise la [política de la marca comercial](https://trademark-policy.openjsf.org/) para información desde el uso de logos y marcas de Node.js®. + +## Mascota de Node.js® + +Créditos a [Angela Angelini](https://www.linkedin.com/in/angeliningl/) por diseñar y contribuir con la Tortuga Cohete. + +Mascota de Node.js + +## Logo de Node.js® + +### Logo Horizontal de Node.js® + + + + + + + + + + +
+ Logo Horizontal Oscuro de Node.js + + Logo Horizontal Claro de Node.js +
+ +### Logo Apilado de Node.js® + + + + + + + + + + + + + + + + + +
+ Logo Apilado Oscuro de Node.js + + Logo Apilado Claro de Node.js +
+ Logo Apilado Negro de Node.js + + Logo Apilado Blanco de Node.js +
+ +### Iconos de JS + + + + + + + + + + +
+ Iconos Verde de JS + + Iconos Blanco de 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 + +![Lanzamientos](https://raw.githubusercontent.com/nodejs/Release/main/schedule.svg?sanitize=true) + +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 + + + Insignia 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. - )} - - -
+ + )} +
+ + + {({ 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/packages/i18n/locales/es.json b/packages/i18n/locales/es.json new file mode 100644 index 0000000000000..dd15732fcecb6 --- /dev/null +++ b/packages/i18n/locales/es.json @@ -0,0 +1,327 @@ +{ + "components": { + "containers": { + "footer": { + "links": { + "trademarkPolicy": "Política de Marcas Registradas", + "privacyPolicy": "Política de Privacidad", + "versionSupport": "Soporte de Versiones", + "codeOfConduct": "Código de Conducta", + "security": "Política de Seguridad" + } + }, + "navBar": { + "links": { + "about": "Acerca de", + "download": "Descargar", + "docs": "Documentación", + "guides": "Guías", + "learn": "Aprender", + "security": "Seguridad", + "certification": "Certificación", + "blog": "Blog", + "contribute": "Contribuir" + } + } + }, + "navigation": { + "learn": { + "gettingStarted": { + "links": { + "gettingStarted": "Primeros pasos", + "introductionToNodejs": "Introducción a Node.js", + "howToInstallNodejs": "Cómo instalar Node.js", + "howMuchJavascriptDoYouNeedToKnowToUseNodejs": "¿Cuánto necesitas saber de JavaScript para usar Node.js?", + "differencesBetweenNodejsAndTheBrowser": "Diferencias entre Node.js y el navegador", + "theV8JavascriptEngine": "El motor de JavaScript V8", + "anIntroductionToTheNpmPackageManager": "Una introducción al gestor de paquetes npm", + "ecmascript2015Es6AndBeyond": "ECMAScript 2015 (ES6) y más allá", + "nodejsTheDifferenceBetweenDevelopmentAndProduction": "Node.js, las diferencias entre desarrollo y producción", + "nodejsWithWebassembly": "Node.js con WebAssembly", + "debugging": "Depuración de Node.js", + "profiling": "Perfilado de Aplicaciones Node.js", + "securityBestPractices": "Mejores prácticas de seguridad" + } + }, + "typescript": { + "links": { + "typescript": "TypeScript", + "introduction": "Introducción a TypeScript", + "transpile": "Ejecutar código TypeScript usando transpiladores", + "run": "Ejecutar TypeScript con un ejecutor", + "runNatively": "Ejecutar TypeScript de forma nativa" + } + }, + "asynchronousWork": { + "links": { + "asynchronousWork": "Trabajo Asincrónico", + "asynchronousFlowControl": "Flujo de control asincrónico", + "overviewOfBlockingVsNonBlocking": "Resumen de Bloqueante vs No Bloqueante", + "javascriptAsynchronousProgrammingAndCallbacks": "Programación Asíncrona en JavaScript y Retrollamadas", + "discoverJavascriptTimers": "Descubre los temporizadores de JavaScript", + "eventLoopTimersAndNexttick": "El Event Loop en Node.js", + "theNodejsEventEmitter": "El Event Emitter en Node.js", + "understandingProcessnexttick": "Entendiendo process.nextTick()", + "understandingSetimmediate": "Entendiendo setImmediate()", + "dontBlockTheEventLoop": "No bloquear el Event Loop" + } + }, + "manipulatingFiles": { + "links": { + "manipulatingFiles": "Manipulación de Archivos", + "nodejsFileStats": "Atributos de archivos en Node.js", + "nodejsFilePaths": "Rutas de archivo en Node.js", + "workingWithFileDescriptorsInNodejs": "Trabajando con descriptores de archivo en Node.js", + "readingFilesWithNodejs": "Leyendo archivos con Node.js", + "writingFilesWithNodejs": "Escribiendo archivos con Node.js", + "workingWithFoldersInNodejs": "Trabajando con carpetas en Node.js", + "workingWithDifferentFilesystems": "Cómo trabajar con diferentes sistemas de archivos" + } + }, + "commandLine": { + "links": { + "commandLine": "Línea de comandos", + "runNodejsScriptsFromTheCommandLine": "Ejecutando scripts de Node.js desde la línea de comandos", + "howToReadEnvironmentVariablesFromNodejs": "Como leer variables de entorno desde Node.js", + "howToUseTheNodejsRepl": "Cómo usar el REPL de Node.js", + "outputToTheCommandLineUsingNodejs": "Salida de línea de comandos usando Node.js", + "acceptInputFromTheCommandLineInNodejs": "Aceptar entrada desde la línea de comandos en Node.js" + } + }, + "modules": { + "links": { + "modules": "Módulos", + "publishingNodeApiModules": "Cómo publicar un paquete de Node-API", + "anatomyOfAnHttpTransaction": "Anatomía de una transacción HTTP", + "abiStability": "Estabilidad ABI", + "backpressuringInStreams": "Control de flujo en Streams" + } + }, + "diagnostics": { + "links": { + "diagnostics": "Diagnósticos", + "userJourney": "Recorrido del usuario", + "memory": "Memoria", + "liveDebugging": "Depuración en tiempo real", + "poorPerformance": "Rendimiento deficiente", + "flameGraphs": "Gráficos de llama" + } + }, + "testRunner": { + "links": { + "testRunner": "Ejecutor de pruebas", + "introduction": "Descubriendo el ejecutor de pruebas de Node.js", + "usingTestRunner": "Utilizando el ejecutor de pruebas de Node.js", + "mocking": "Simulación en pruebas" + } + } + }, + "about": { + "links": { + "about": "Sobre Node.js", + "aboutSide": "Sobre Node.js®", + "branding": "Marca de Node.js", + "governance": "Gobernanza del proyecto", + "releases": "Lanzamientos de Node.js", + "security": "Reporte de Seguridad" + } + }, + "getInvolved": { + "links": { + "getInvolved": "Colaborar", + "collabSummit": "Cumbre de Colaboradores", + "upcomingEvents": "Próximos Eventos", + "contribute": "Contribuir a Node.js", + "codeOfConduct": "Código de Conducta" + } + } + }, + "downloadList": { + "links": { + "previousReleases": "Lanzamientos de Node.js", + "packageManager": "Instalar Node.js mediante un gestor de paquetes", + "shaSums": { + "title": "SHASUMS firmados para archivos de lanzamiento", + "howToVerify": " (Cómo verificarlo)" + }, + "allDownloads": "Todas las opciones de descarga", + "nightlyReleases": "Versiones Nightly", + "unofficialBuilds": "Versiones no oficiales", + "buildingFromSource": "Compilar Node.js desde el código fuente en plataformas compatibles", + "installingOnLinux": "Instalar Node.js a través del archivo binario", + "installingOnWsl": "Instalar en Windows Subsystem for Linux (WSL)" + } + }, + "downloadReleasesTable": { + "changelog": "Historial", + "releases": "Lanzamientos", + "docs": "Documentación" + }, + "pagination": { + "next": "Siguiente", + "previous": "Anterior" + }, + "common": { + "breadcrumbs": { + "navigateToHome": "Ir al inicio" + }, + "crossLink": { + "previous": "Anterior", + "next": "Siguiente" + }, + "codebox": { + "copy": "Copiar al portapapeles", + "copied": "¡Copiado al portapapeles!" + }, + "pagination": { + "prev": "Previo", + "prevAriaLabel": "Página anterior", + "next": "Siguiente", + "nextAriaLabel": "Página siguiente", + "defaultLabel": "Paginación", + "pageLabel": "Ir a la página {pageNumber}" + }, + "sidebar": { + "title": "Cambiar página" + }, + "languageDropdown": { + "label": "Seleccionar idioma" + }, + "themeToggle": { + "label": "Alternar Modo Oscuro" + } + }, + "metabar": { + "lastUpdated": "Última Actualización", + "readingTime": "Tiempo de Lectura", + "addedIn": "Agregado en", + "author": "Autor", + "authors": "Autores", + "contribute": "Contribuir", + "contributeText": "Editar esta página", + "viewAs": "Mostrar como", + "tableOfContents": "Tabla de Contenidos" + }, + "downloads": { + "changelogModal": { + "startContributing": "Comienza a Contribuir" + } + }, + "search": { + "searchBox": { + "placeholder": "Empezar a escribir..." + }, + "seeAll": { + "text": "Ver los {count} resultados" + }, + "searchError": { + "text": "Ocurrió un error mientras se realizaba la búsqueda. Por favor, intenta nuevamente más tarde." + }, + "poweredBy": { + "text": "Impulsado por" + }, + "noResults": { + "text": "Lo sentimos, no hay resultados para {query}." + }, + "emptyState": { + "text": "Buscar algo..." + }, + "searchPage": { + "title": "Usted está buscando: {query}" + } + }, + "blog": { + "blogHeader": { + "subtitle": "Las últimas noticias de Node.js, estudios de caso, tutoriales y recursos.", + "rssLink": "Fuente RSS" + } + } + }, + "layouts": { + "blogPost": { + "author": { + "byLine": "{author, select, null {} other {Por {author}, }}" + } + }, + "blogIndex": { + "categoryName": "{category, select, all {Blog} other {Publicaciones de blog {category}}}" + }, + "blog": { + "title": "Blog", + "selectCategory": "Categorías", + "categories": { + "all": "Todo", + "announcements": "Anuncios", + "release": "Lanzamientos", + "vulnerability": "Vulnerabilidades", + "advisory-board": "Consejo Asesor", + "community": "Comunidad", + "feature": "Característica", + "module": "Módulo", + "npm": "npm", + "uncategorized": "Sin categoría", + "video": "Video", + "weekly": "Actualizaciones semanales", + "wg": "Grupos de trabajo", + "events": "Eventos" + } + }, + "error": { + "notFound": { + "title": "No se pudo encontrar la página", + "description": "Lo siento, no pudimos encontrar la página que buscas. Intenta nuevamente desde la página de inicio." + }, + "internalServerError": { + "title": "Error interno del servidor", + "description": "Esta página ha generado un error no recuperable." + }, + "backToHome": "Volver al inicio" + }, + "download": { + "selectCategory": "Categorías", + "categories": { + "prebuilt-installer": "Instalador precompilado", + "prebuilt-binaries": "Binarios precompilados", + "package-manager": "Gestor de Paquetes", + "source-code": "Código Fuente" + }, + "buttons": { + "prebuilt": "Descargar Node.js {version}", + "source": "Descargar código fuente de Node.js {version}" + }, + "dropdown": { + "bitness": "Arquitectura", + "os": "Sistema Operativo", + "version": "Versión", + "platform": "Plataforma" + }, + "codeBox": { + "unsupportedVersionWarning": "Esta versión está fuera de mantenimiento. Encuentre más información aquí:", + "fnmEnvSetup": "configurar el entorno de fnm", + "systemManagerWarning": "no es un manejador de paquetes de Node.js. Por favor, asegúrate de tener un {packageManager} instalado.", + "communityWarning": "El proyecto Node.js no mantiene los gestores de paquetes ni sus scripts de instalación.", + "communityWarningReport": "Si encuentras problemas, por favor, contacta con los mantenedores del manejador de paquetes.", + "installsNvm": "instala nvm (Node Version Manager)", + "downloadAndInstallNodejsRestartTerminal": "descargar e instalar Node.js (es posible que necesites reiniciar la terminal)", + "verifiesRightNodejsVersion": "verifica que la versión correcta de Node.js se encuentra en el entorno", + "verifiesRightNpmVersion": "verifica que la versión correcta de npm está en el entorno", + "shouldPrint": "debería de imprimir `{version}`", + "installsFnm": "instala fnm (Fast Node Manager)", + "downloadAndInstallNodejs": "descarga e instala Node.js", + "activateFNM": "activar fnm", + "noteWithColon": "NOTA:", + "dockerIsNotNodejsPackageManager": "Docker no es un administrador de paquetes de Node.js.", + "PleaseEndureAlreadyInstallOnSystem": "Por favor asegúrese de que ya esté instalado en su sistema.", + "dockerInstructions": "Siga las instrucciones oficiales en https://docs.docker.com/desktop/", + "dockerImagesLink": "Las imágenes de Docker se proporcionan oficialmente en https://github.com/nodejs/docker-node/", + "pullsNodejsDockerImage": "descarga la imagen de Docker de Node.js", + "homebrewIsNotNodejsPackageManager": "Homebrew no es un administrador de paquetes de Node.js.", + "homebrewInstructions": "Siga las instrucciones oficiales en https://brew.sh/", + "homebrewSupportsIntallingMajorNodejsVersion": "Homebrew solo admite la instalación de versiones principales de Node.js y puede que no sea compatible con la última versión de Node.js de la línea de lanzamiento {version}.", + "chocolateyIsNotNodejsPackageManager": "Chocolatey no es un administrador de paquetes de Node.js.", + "chocolateyInstructions": "Siga las instrucciones oficiales en https://chocolatey.org/", + "chocolateyNotMaintanedByNodejs": "Chocolatey no es mantenido oficialmente por el proyecto Node.js y puede que no sea compatible con la versión {version} de Node.js" + } + } + } +} From d9c7506bb6d2210f9f6e2162e6f0c2b7b6c55af4 Mon Sep 17 00:00:00 2001 From: Brian Muenzenmeyer Date: Wed, 18 Dec 2024 06:00:42 -0600 Subject: [PATCH 62/65] Enable spanish (#7334) enable spanish --- packages/i18n/config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/i18n/config.json b/packages/i18n/config.json index f76eb20fb6eee..4100a8497c5de 100644 --- a/packages/i18n/config.json +++ b/packages/i18n/config.json @@ -56,7 +56,7 @@ "langDir": "ltr", "dateFormat": "DD.MM.YYYY", "hrefLang": "es-ES", - "enabled": false, + "enabled": true, "default": false }, { From ad3f328e0627dd46ba5bd22b4219ebbaaa231ac7 Mon Sep 17 00:00:00 2001 From: Stanley Wang Date: Thu, 19 Dec 2024 08:10:04 +0800 Subject: [PATCH 63/65] docs: fix typos in wasm mjs example (#7333) --- .../pages/en/learn/getting-started/nodejs-with-webassembly.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/site/pages/en/learn/getting-started/nodejs-with-webassembly.md b/apps/site/pages/en/learn/getting-started/nodejs-with-webassembly.md index 05a8dcadfe300..eb6dbcd55a2bd 100644 --- a/apps/site/pages/en/learn/getting-started/nodejs-with-webassembly.md +++ b/apps/site/pages/en/learn/getting-started/nodejs-with-webassembly.md @@ -66,7 +66,7 @@ WebAssembly.instantiate(wasmBuffer).then(wasmModule => { import fs from 'node:fs/promises'; // Use readFile to read contents of the "add.wasm" file -const wasmBuffer = await fs.readFile('path/to/add.wsm'); +const wasmBuffer = await fs.readFile('/path/to/add.wasm'); // Use the WebAssembly.instantiate method to instantiate the WebAssembly module const wasmModule = await WebAssembly.instantiate(wasmBuffer); @@ -76,7 +76,7 @@ const { add } = wasmModule.instance.exports; const sum = add(5, 6); -console.log(sum); // Outputs 11 +console.log(sum); // Outputs: 11 ``` ## Interacting with the OS From d4de2a60ce638bccedbde53c91ae5d38482d58f3 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Thu, 19 Dec 2024 20:44:06 +0100 Subject: [PATCH 64/65] Blog: v23.5.0 release post (#7341) * Blog: v23.5.0 release post Refs: https://github.com/nodejs/node/pull/56310 * Update apps/site/pages/en/blog/release/v23.5.0.md Co-authored-by: Jordan Harband Signed-off-by: Antoine du Hamel --------- Signed-off-by: Antoine du Hamel Co-authored-by: Jordan Harband --- apps/site/pages/en/blog/release/v23.5.0.md | 249 +++++++++++++++++++++ 1 file changed, 249 insertions(+) create mode 100644 apps/site/pages/en/blog/release/v23.5.0.md diff --git a/apps/site/pages/en/blog/release/v23.5.0.md b/apps/site/pages/en/blog/release/v23.5.0.md new file mode 100644 index 0000000000000..c80aa4b774cfd --- /dev/null +++ b/apps/site/pages/en/blog/release/v23.5.0.md @@ -0,0 +1,249 @@ +--- +date: '2024-12-19T18:57:29.689Z' +category: release +title: Node v23.5.0 (Current) +layout: blog-post +author: Antoine du Hamel +--- + +## 2024-12-19, Version 23.5.0 (Current), @aduh95 + +### Notable Changes + +#### WebCryptoAPI Ed25519 and X25519 algorithms are now stable + +Following the merge of Curve25519 into the +[Web Cryptography API Editor's Draft](https://w3c.github.io/webcrypto/) the +`Ed25519` and `X25519` algorithm identifiers are now stable and will no longer +emit an ExperimentalWarning upon use. + +Contributed by Filip Skokan in [#56142](https://github.com/nodejs/node/pull/56142). + +#### On-thread hooks are back + +This release introduces `module.registerHooks()` for registering module loader +customization hooks that are run for all modules loaded by `require()`, `import`, +and functions returned by `createRequire()` in the same thread, which makes them +easier for CJS monkey-patchers to migrate to. + +```mjs +import assert from 'node:assert'; +import { registerHooks, createRequire } from 'node:module'; +import { writeFileSync } from 'node:fs'; + +writeFileSync('./bar.js', 'export const id = 123;', 'utf8'); + +registerHooks({ + resolve(specifier, context, nextResolve) { + const replaced = specifier.replace('foo', 'bar'); + return nextResolve(replaced, context); + }, + load(url, context, nextLoad) { + const result = nextLoad(url, context); + return { + ...result, + source: result.source.toString().replace('123', '456'), + }; + }, +}); + +// Checks that it works with require. +const require = createRequire(import.meta.url); +const required = require('./foo.js'); // Redirected by resolve hook to bar.js +assert.strictEqual(required.id, 456); // Replaced by load hook to 456 + +// Checks that it works with import. +const imported = await import('./foo.js'); // Redirected by resolve hook to bar.js +assert.strictEqual(imported.id, 456); // Replaced by load hook to 456 +``` + +This complements the `module.register()` hooks - the new hooks fit better +internally and cover all corners in the module graph; whereas +`module.register()` previously could not cover `require()` while it was +on-thread, and still cannot cover `createRequire()` after being moved +off-thread. + +They are also run in the same thread as the modules being loaded and where the +hooks are registered, which means they are easier to debug (no more +`console.log()` getting lost) and do not have the many deadlock issues haunting +the `module.register()` hooks. The new API also takes functions directly so that +it's easier for intermediate loader packages to take user options from files +that the hooks can't be aware of, like many existing CJS monkey-patchers do. + +Contributed by Joyee Cheung in [#55698](https://github.com/nodejs/node/pull/55698). + +#### Other notable changes + +- \[[`59cae91465`](https://github.com/nodejs/node/commit/59cae91465)] - **(SEMVER-MINOR)** **dgram**: support blocklist in udp (theanarkh) [#56087](https://github.com/nodejs/node/pull/56087) +- \[[`72f79b44ed`](https://github.com/nodejs/node/commit/72f79b44ed)] - **doc**: stabilize util.styleText (Rafael Gonzaga) [#56265](https://github.com/nodejs/node/pull/56265) +- \[[`b5a2c0777d`](https://github.com/nodejs/node/commit/b5a2c0777d)] - **(SEMVER-MINOR)** **module**: add prefix-only modules to `module.builtinModules` (Jordan Harband) [#56185](https://github.com/nodejs/node/pull/56185) +- \[[`9863d27566`](https://github.com/nodejs/node/commit/9863d27566)] - **(SEMVER-MINOR)** **module**: only emit require(esm) warning under --trace-require-module (Joyee Cheung) [#56194](https://github.com/nodejs/node/pull/56194) +- \[[`8e780bc5ae`](https://github.com/nodejs/node/commit/8e780bc5ae)] - **(SEMVER-MINOR)** **module**: use synchronous hooks for preparsing in import(cjs) (Joyee Cheung) [#55698](https://github.com/nodejs/node/pull/55698) +- \[[`65bc8e847f`](https://github.com/nodejs/node/commit/65bc8e847f)] - **(SEMVER-MINOR)** **report**: fix typos in report keys and bump the version (Yuan-Ming Hsu) [#56068](https://github.com/nodejs/node/pull/56068) +- \[[`0ab36e1937`](https://github.com/nodejs/node/commit/0ab36e1937)] - **(SEMVER-MINOR)** **sqlite**: aggregate constants in a single property (Edigleysson Silva (Edy)) [#56213](https://github.com/nodejs/node/pull/56213) +- \[[`efcc5d90c5`](https://github.com/nodejs/node/commit/efcc5d90c5)] - **(SEMVER-MINOR)** **src,lib**: stabilize permission model (Rafael Gonzaga) [#56201](https://github.com/nodejs/node/pull/56201) + +### Commits + +- \[[`2314e4916e`](https://github.com/nodejs/node/commit/2314e4916e)] - **assert**: make Maps be partially compared in partialDeepStrictEqual (Giovanni Bucci) [#56195](https://github.com/nodejs/node/pull/56195) +- \[[`cfbdff7b45`](https://github.com/nodejs/node/commit/cfbdff7b45)] - **assert**: make partialDeepStrictEqual work with ArrayBuffers (Giovanni Bucci) [#56098](https://github.com/nodejs/node/pull/56098) +- \[[`f264dd6d20`](https://github.com/nodejs/node/commit/f264dd6d20)] - **buffer**: document concat zero-fill (Duncan) [#55562](https://github.com/nodejs/node/pull/55562) +- \[[`4831b87d83`](https://github.com/nodejs/node/commit/4831b87d83)] - **build**: set DESTCPU correctly for 'make binary' on loongarch64 (吴小白) [#56271](https://github.com/nodejs/node/pull/56271) +- \[[`1497bb405e`](https://github.com/nodejs/node/commit/1497bb405e)] - **build**: fix missing fp16 dependency in d8 builds (Joyee Cheung) [#56266](https://github.com/nodejs/node/pull/56266) +- \[[`445c8c7489`](https://github.com/nodejs/node/commit/445c8c7489)] - **build**: add major release action (Rafael Gonzaga) [#56199](https://github.com/nodejs/node/pull/56199) +- \[[`f4faedfa69`](https://github.com/nodejs/node/commit/f4faedfa69)] - **build**: fix C string encoding for `PRODUCT_DIR_ABS` (Anna Henningsen) [#56111](https://github.com/nodejs/node/pull/56111) +- \[[`6f49c8006c`](https://github.com/nodejs/node/commit/6f49c8006c)] - **build**: use variable for simdutf path (Shelley Vohr) [#56196](https://github.com/nodejs/node/pull/56196) +- \[[`fcaa2c82a6`](https://github.com/nodejs/node/commit/fcaa2c82a6)] - **build**: fix GN build on macOS (Joyee Cheung) [#56141](https://github.com/nodejs/node/pull/56141) +- \[[`08e5309f4f`](https://github.com/nodejs/node/commit/08e5309f4f)] - _**Revert**_ "**build**: avoid compiling with VS v17.12" (Gerhard Stöbich) [#56151](https://github.com/nodejs/node/pull/56151) +- \[[`c2fb38cfdf`](https://github.com/nodejs/node/commit/c2fb38cfdf)] - **crypto**: graduate WebCryptoAPI Ed25519 and X25519 algorithms as stable (Filip Skokan) [#56142](https://github.com/nodejs/node/pull/56142) +- \[[`8658833884`](https://github.com/nodejs/node/commit/8658833884)] - **deps**: update nghttp3 to 1.6.0 (Node.js GitHub Bot) [#56258](https://github.com/nodejs/node/pull/56258) +- \[[`7c941d4610`](https://github.com/nodejs/node/commit/7c941d4610)] - **deps**: update simdutf to 5.6.4 (Node.js GitHub Bot) [#56255](https://github.com/nodejs/node/pull/56255) +- \[[`4e9113eada`](https://github.com/nodejs/node/commit/4e9113eada)] - **deps**: update libuv to 1.49.2 (Luigi Pinca) [#56224](https://github.com/nodejs/node/pull/56224) +- \[[`db6aba12e4`](https://github.com/nodejs/node/commit/db6aba12e4)] - **deps**: update c-ares to v1.34.4 (Node.js GitHub Bot) [#56256](https://github.com/nodejs/node/pull/56256) +- \[[`25bb462bc2`](https://github.com/nodejs/node/commit/25bb462bc2)] - **deps**: define V8_PRESERVE_MOST as no-op on Windows (Stefan Stojanovic) [#56238](https://github.com/nodejs/node/pull/56238) +- \[[`54308c51bb`](https://github.com/nodejs/node/commit/54308c51bb)] - **deps**: update sqlite to 3.47.2 (Node.js GitHub Bot) [#56178](https://github.com/nodejs/node/pull/56178) +- \[[`59cae91465`](https://github.com/nodejs/node/commit/59cae91465)] - **(SEMVER-MINOR)** **dgram**: support blocklist in udp (theanarkh) [#56087](https://github.com/nodejs/node/pull/56087) +- \[[`52c18e605e`](https://github.com/nodejs/node/commit/52c18e605e)] - **doc**: fix color contrast issue in light mode (Rich Trott) [#56272](https://github.com/nodejs/node/pull/56272) +- \[[`72f79b44ed`](https://github.com/nodejs/node/commit/72f79b44ed)] - **doc**: stabilize util.styleText (Rafael Gonzaga) [#56265](https://github.com/nodejs/node/pull/56265) +- \[[`0d08756d0c`](https://github.com/nodejs/node/commit/0d08756d0c)] - **doc**: clarify util.aborted resource usage (Kunal Kumar) [#55780](https://github.com/nodejs/node/pull/55780) +- \[[`f94f21080b`](https://github.com/nodejs/node/commit/f94f21080b)] - **doc**: add esm examples to node:repl (Alfredo González) [#55432](https://github.com/nodejs/node/pull/55432) +- \[[`7a10ef88d9`](https://github.com/nodejs/node/commit/7a10ef88d9)] - **doc**: add esm examples to node:readline (Alfredo González) [#55335](https://github.com/nodejs/node/pull/55335) +- \[[`cc7a7c391b`](https://github.com/nodejs/node/commit/cc7a7c391b)] - **doc**: fix 'which' to 'that' and add commas (Selveter Senitro) [#56216](https://github.com/nodejs/node/pull/56216) +- \[[`c5b086250e`](https://github.com/nodejs/node/commit/c5b086250e)] - **doc**: fix winget config path (Alex Yang) [#56233](https://github.com/nodejs/node/pull/56233) +- \[[`71c38a24d4`](https://github.com/nodejs/node/commit/71c38a24d4)] - **doc**: add esm examples to node:tls (Alfredo González) [#56229](https://github.com/nodejs/node/pull/56229) +- \[[`394fffbbde`](https://github.com/nodejs/node/commit/394fffbbde)] - **doc**: add esm examples to node:perf_hooks (Alfredo González) [#55257](https://github.com/nodejs/node/pull/55257) +- \[[`7b2a6ee61e`](https://github.com/nodejs/node/commit/7b2a6ee61e)] - **doc**: `sea.getRawAsset(key)` always returns an ArrayBuffer (沈鸿飞) [#56206](https://github.com/nodejs/node/pull/56206) +- \[[`8092dcf27e`](https://github.com/nodejs/node/commit/8092dcf27e)] - **doc**: update announce documentation for releases (Rafael Gonzaga) [#56200](https://github.com/nodejs/node/pull/56200) +- \[[`2974667815`](https://github.com/nodejs/node/commit/2974667815)] - **doc**: update blog link to /vulnerability (Rafael Gonzaga) [#56198](https://github.com/nodejs/node/pull/56198) +- \[[`f3b3ff85e0`](https://github.com/nodejs/node/commit/f3b3ff85e0)] - **doc**: call out import.meta is only supported in ES modules (Anton Kastritskii) [#56186](https://github.com/nodejs/node/pull/56186) +- \[[`a9e67280e7`](https://github.com/nodejs/node/commit/a9e67280e7)] - **doc**: add ambassador message - benefits of Node.js (Michael Dawson) [#56085](https://github.com/nodejs/node/pull/56085) +- \[[`e4922ab15f`](https://github.com/nodejs/node/commit/e4922ab15f)] - **doc**: fix incorrect link to style guide (Yuan-Ming Hsu) [#56181](https://github.com/nodejs/node/pull/56181) +- \[[`114a3e5a05`](https://github.com/nodejs/node/commit/114a3e5a05)] - **doc**: fix c++ addon hello world sample (Edigleysson Silva (Edy)) [#56172](https://github.com/nodejs/node/pull/56172) +- \[[`f1c2d2f65e`](https://github.com/nodejs/node/commit/f1c2d2f65e)] - **doc**: update blog release-post link (Ruy Adorno) [#56123](https://github.com/nodejs/node/pull/56123) +- \[[`d48b5224c0`](https://github.com/nodejs/node/commit/d48b5224c0)] - **doc**: fix module.md headings (Chengzhong Wu) [#56131](https://github.com/nodejs/node/pull/56131) +- \[[`4cc0493a0b`](https://github.com/nodejs/node/commit/4cc0493a0b)] - **fs**: make mutating `options` in Callback `readdir()` not affect results (LiviaMedeiros) [#56057](https://github.com/nodejs/node/pull/56057) +- \[[`8d485f1c09`](https://github.com/nodejs/node/commit/8d485f1c09)] - **fs**: make mutating `options` in Promises `readdir()` not affect results (LiviaMedeiros) [#56057](https://github.com/nodejs/node/pull/56057) +- \[[`595851b5ed`](https://github.com/nodejs/node/commit/595851b5ed)] - **fs,win**: fix readdir for named pipe (Hüseyin Açacak) [#56110](https://github.com/nodejs/node/pull/56110) +- \[[`075b36b7b4`](https://github.com/nodejs/node/commit/075b36b7b4)] - **http**: add setDefaultHeaders option to http.request (Tim Perry) [#56112](https://github.com/nodejs/node/pull/56112) +- \[[`febd969c46`](https://github.com/nodejs/node/commit/febd969c46)] - **http2**: remove duplicate codeblock (Vitaly Aminev) [#55915](https://github.com/nodejs/node/pull/55915) +- \[[`b0ebd23e52`](https://github.com/nodejs/node/commit/b0ebd23e52)] - **http2**: support ALPNCallback option (ZYSzys) [#56187](https://github.com/nodejs/node/pull/56187) +- \[[`f10239fde7`](https://github.com/nodejs/node/commit/f10239fde7)] - **lib**: remove redundant global regexps (Gürgün Dayıoğlu) [#56182](https://github.com/nodejs/node/pull/56182) +- \[[`fd55d3cbdd`](https://github.com/nodejs/node/commit/fd55d3cbdd)] - **lib**: clean up persisted signals when they are settled (Edigleysson Silva (Edy)) [#56001](https://github.com/nodejs/node/pull/56001) +- \[[`889094fdbc`](https://github.com/nodejs/node/commit/889094fdbc)] - **lib**: handle Float16Array in node:v8 serdes (Bartek Iwańczuk) [#55996](https://github.com/nodejs/node/pull/55996) +- \[[`5aec513207`](https://github.com/nodejs/node/commit/5aec513207)] - **lib**: disable default memory leak warning for AbortSignal (Lenz Weber-Tronic) [#55816](https://github.com/nodejs/node/pull/55816) +- \[[`b5a2c0777d`](https://github.com/nodejs/node/commit/b5a2c0777d)] - **(SEMVER-MINOR)** **module**: add prefix-only modules to `module.builtinModules` (Jordan Harband) [#56185](https://github.com/nodejs/node/pull/56185) +- \[[`9863d27566`](https://github.com/nodejs/node/commit/9863d27566)] - **(SEMVER-MINOR)** **module**: only emit require(esm) warning under --trace-require-module (Joyee Cheung) [#56194](https://github.com/nodejs/node/pull/56194) +- \[[`5665e86da6`](https://github.com/nodejs/node/commit/5665e86da6)] - **module**: prevent main thread exiting before esm worker ends (Shima Ryuhei) [#56183](https://github.com/nodejs/node/pull/56183) +- \[[`8e780bc5ae`](https://github.com/nodejs/node/commit/8e780bc5ae)] - **(SEMVER-MINOR)** **module**: use synchronous hooks for preparsing in import(cjs) (Joyee Cheung) [#55698](https://github.com/nodejs/node/pull/55698) +- \[[`e5bb6c2303`](https://github.com/nodejs/node/commit/e5bb6c2303)] - **(SEMVER-MINOR)** **module**: implement module.registerHooks() (Joyee Cheung) [#55698](https://github.com/nodejs/node/pull/55698) +- \[[`f883bedceb`](https://github.com/nodejs/node/commit/f883bedceb)] - **node-api**: allow napi_delete_reference in finalizers (Chengzhong Wu) [#55620](https://github.com/nodejs/node/pull/55620) +- \[[`65bc8e847f`](https://github.com/nodejs/node/commit/65bc8e847f)] - **(SEMVER-MINOR)** **report**: fix typos in report keys and bump the version (Yuan-Ming Hsu) [#56068](https://github.com/nodejs/node/pull/56068) +- \[[`a6f0cfa468`](https://github.com/nodejs/node/commit/a6f0cfa468)] - **sea**: only assert snapshot main function for main threads (Joyee Cheung) [#56120](https://github.com/nodejs/node/pull/56120) +- \[[`0ab36e1937`](https://github.com/nodejs/node/commit/0ab36e1937)] - **(SEMVER-MINOR)** **sqlite**: aggregate constants in a single property (Edigleysson Silva (Edy)) [#56213](https://github.com/nodejs/node/pull/56213) +- \[[`4745798225`](https://github.com/nodejs/node/commit/4745798225)] - **sqlite**: add support for custom functions (Colin Ihrig) [#55985](https://github.com/nodejs/node/pull/55985) +- \[[`53cc0cc744`](https://github.com/nodejs/node/commit/53cc0cc744)] - **sqlite**: support `db.loadExtension` (Alex Yang) [#53900](https://github.com/nodejs/node/pull/53900) +- \[[`3968599702`](https://github.com/nodejs/node/commit/3968599702)] - **src**: fix outdated js2c.cc references (Chengzhong Wu) [#56133](https://github.com/nodejs/node/pull/56133) +- \[[`efcc5d90c5`](https://github.com/nodejs/node/commit/efcc5d90c5)] - **(SEMVER-MINOR)** **src,lib**: stabilize permission model (Rafael Gonzaga) [#56201](https://github.com/nodejs/node/pull/56201) +- \[[`a4a83613cb`](https://github.com/nodejs/node/commit/a4a83613cb)] - **stream**: commit pull-into descriptors after filling from queue (Mattias Buelens) [#56072](https://github.com/nodejs/node/pull/56072) +- \[[`3298ef4891`](https://github.com/nodejs/node/commit/3298ef4891)] - **test**: remove test-sqlite-statement-sync flaky designation (Luigi Pinca) [#56051](https://github.com/nodejs/node/pull/56051) +- \[[`1d8cc6179d`](https://github.com/nodejs/node/commit/1d8cc6179d)] - **test**: use --permission over --experimental-permission (Rafael Gonzaga) [#56239](https://github.com/nodejs/node/pull/56239) +- \[[`5d252b7a67`](https://github.com/nodejs/node/commit/5d252b7a67)] - **test**: remove exludes for sea tests on PPC (Michael Dawson) [#56217](https://github.com/nodejs/node/pull/56217) +- \[[`8288f57724`](https://github.com/nodejs/node/commit/8288f57724)] - **test**: fix test-abortsignal-drop-settled-signals flakiness (Edigleysson Silva (Edy)) [#56197](https://github.com/nodejs/node/pull/56197) +- \[[`683cc15796`](https://github.com/nodejs/node/commit/683cc15796)] - **test**: move localizationd data from `test-icu-env` to external file (Livia Medeiros) [#55618](https://github.com/nodejs/node/pull/55618) +- \[[`a0c4a5f122`](https://github.com/nodejs/node/commit/a0c4a5f122)] - **test**: update WPT for url to 6fa3fe8a92 (Node.js GitHub Bot) [#56136](https://github.com/nodejs/node/pull/56136) +- \[[`a0e3926285`](https://github.com/nodejs/node/commit/a0e3926285)] - **test**: remove `hasOpenSSL3x` utils (Antoine du Hamel) [#56164](https://github.com/nodejs/node/pull/56164) +- \[[`041a49094e`](https://github.com/nodejs/node/commit/041a49094e)] - **test**: update streams wpt (Mattias Buelens) [#56072](https://github.com/nodejs/node/pull/56072) +- \[[`ea9a675f56`](https://github.com/nodejs/node/commit/ea9a675f56)] - **test_runner**: exclude test files from coverage by default (Pietro Marchini) [#56060](https://github.com/nodejs/node/pull/56060) +- \[[`118cd9998f`](https://github.com/nodejs/node/commit/118cd9998f)] - **tools**: fix `node:` enforcement for docs (Antoine du Hamel) [#56284](https://github.com/nodejs/node/pull/56284) +- \[[`c4c56daae8`](https://github.com/nodejs/node/commit/c4c56daae8)] - **tools**: update github_reporter to 1.7.2 (Node.js GitHub Bot) [#56205](https://github.com/nodejs/node/pull/56205) +- \[[`78743b1533`](https://github.com/nodejs/node/commit/78743b1533)] - **tools**: add REPLACEME check to workflow (Mert Can Altin) [#56251](https://github.com/nodejs/node/pull/56251) +- \[[`002ee71d9b`](https://github.com/nodejs/node/commit/002ee71d9b)] - **tools**: use `github.actor` instead of bot username for release proposals (Antoine du Hamel) [#56232](https://github.com/nodejs/node/pull/56232) +- \[[`d25d16efeb`](https://github.com/nodejs/node/commit/d25d16efeb)] - _**Revert**_ "**tools**: disable automated libuv updates" (Luigi Pinca) [#56223](https://github.com/nodejs/node/pull/56223) +- \[[`b395e0c8c9`](https://github.com/nodejs/node/commit/b395e0c8c9)] - **tools**: update gyp-next to 0.19.1 (Anna Henningsen) [#56111](https://github.com/nodejs/node/pull/56111) +- \[[`a5aaf31c50`](https://github.com/nodejs/node/commit/a5aaf31c50)] - **tools**: fix release proposal linter to support more than 1 folk preparing (Antoine du Hamel) [#56203](https://github.com/nodejs/node/pull/56203) +- \[[`fa667d609e`](https://github.com/nodejs/node/commit/fa667d609e)] - **tools**: remove has_absl_stringify from gyp file (Michaël Zasso) [#56157](https://github.com/nodejs/node/pull/56157) +- \[[`65b541e70e`](https://github.com/nodejs/node/commit/65b541e70e)] - **tools**: enable linter for `tools/icu/**` (Livia Medeiros) [#56176](https://github.com/nodejs/node/pull/56176) +- \[[`28a4b6ff58`](https://github.com/nodejs/node/commit/28a4b6ff58)] - **tools**: use commit title as PR title when creating release proposal (Antoine du Hamel) [#56165](https://github.com/nodejs/node/pull/56165) +- \[[`e20eef659f`](https://github.com/nodejs/node/commit/e20eef659f)] - **tools**: update gyp-next to 0.19.0 (Node.js GitHub Bot) [#56158](https://github.com/nodejs/node/pull/56158) +- \[[`efcc829085`](https://github.com/nodejs/node/commit/efcc829085)] - **tools**: bump the eslint group in /tools/eslint with 4 updates (dependabot\[bot]) [#56099](https://github.com/nodejs/node/pull/56099) +- \[[`5620b2be8a`](https://github.com/nodejs/node/commit/5620b2be8a)] - **tools**: improve release proposal PR opening (Antoine du Hamel) [#56161](https://github.com/nodejs/node/pull/56161) +- \[[`3e17a8e78e`](https://github.com/nodejs/node/commit/3e17a8e78e)] - **util**: harden more built-in classes against prototype pollution (Antoine du Hamel) [#56225](https://github.com/nodejs/node/pull/56225) +- \[[`13815417c7`](https://github.com/nodejs/node/commit/13815417c7)] - **util**: fix Latin1 decoding to return string output (Mert Can Altin) [#56222](https://github.com/nodejs/node/pull/56222) +- \[[`77397c5013`](https://github.com/nodejs/node/commit/77397c5013)] - **util**: do not rely on mutable `Object` and `Function`' `constructor` prop (Antoine du Hamel) [#56188](https://github.com/nodejs/node/pull/56188) +- \[[`84f98e0a74`](https://github.com/nodejs/node/commit/84f98e0a74)] - **v8,tools**: expose experimental wasm revectorize feature (Yolanda-Chen) [#54896](https://github.com/nodejs/node/pull/54896) +- \[[`8325fa5c04`](https://github.com/nodejs/node/commit/8325fa5c04)] - **worker**: fix crash when a worker joins after exit (Stephen Belanger) [#56191](https://github.com/nodejs/node/pull/56191) + +Windows 64-bit Installer: https://nodejs.org/dist/v23.5.0/node-v23.5.0-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v23.5.0/node-v23.5.0-arm64.msi \ +Windows 64-bit Binary: https://nodejs.org/dist/v23.5.0/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v23.5.0/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v23.5.0/node-v23.5.0.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v23.5.0/node-v23.5.0-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v23.5.0/node-v23.5.0-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v23.5.0/node-v23.5.0-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v23.5.0/node-v23.5.0-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v23.5.0/node-v23.5.0-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v23.5.0/node-v23.5.0-aix-ppc64.tar.gz \ +ARMv7 32-bit Binary: https://nodejs.org/dist/v23.5.0/node-v23.5.0-linux-armv7l.tar.xz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v23.5.0/node-v23.5.0-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v23.5.0/node-v23.5.0.tar.gz \ +Other release files: https://nodejs.org/dist/v23.5.0/ \ +Documentation: https://nodejs.org/docs/v23.5.0/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +5b487cdc9b490fb617201e4bc8b5ac247c1871fa8108857e6868e12527d6df19 node-v23.5.0-aix-ppc64.tar.gz +47b9aa8724b8a498c631dcede71515e450f6486734d3cf42a573f9aa682cf6a4 node-v23.5.0-arm64.msi +71b1ca0e4d776b9b7648781303d8c5eb12be32c5ed0df4f97a26fd779bc7ef80 node-v23.5.0-darwin-arm64.tar.gz +14bcad06df6a19b327dc8329e91c280cc5025be12e5af6cabac1b4731c24b06f node-v23.5.0-darwin-arm64.tar.xz +887506572511e4b90e4aab044db491ac4836c014904ae7537a9ca5c11b47c26d node-v23.5.0-darwin-x64.tar.gz +9da8d10ed0b910aae01c08c78950c6c53a04bf3f89bbf288d665b2ad85ddf54a node-v23.5.0-darwin-x64.tar.xz +7d711273edc69f59e64965adbee97ef14c419192ea2b3537fadc1fa2aa2da48d node-v23.5.0-headers.tar.gz +2a40c0fd34bdb8ecc9ecc3cfd6bc4abfffd98f42448ee482fb1dc87eabc9da95 node-v23.5.0-headers.tar.xz +209018ce7a867f5082cbdfdc91f379f49d021a58252cc65c5488c591004a750c node-v23.5.0-linux-arm64.tar.gz +99087f807262b44a39836d41a95dd132c805034c779121580099e964b8792522 node-v23.5.0-linux-arm64.tar.xz +599411676cdb5ba7fb472a74b37957eec0ef8f97269ba8ca77ce36f14f0c3554 node-v23.5.0-linux-armv7l.tar.gz +cc6c7e5ff2a8bf3972a01bb3197292dc086635ccf4e4189e38c4d53cb969fa94 node-v23.5.0-linux-armv7l.tar.xz +21d158927d10d23d31cfa2673667be238a23520daedfd855a8978ee78df511f3 node-v23.5.0-linux-ppc64le.tar.gz +216669da7486cc40dbf82b08ceb97bd589064b6b8b5affa17e115f13d51062e7 node-v23.5.0-linux-ppc64le.tar.xz +13aea5d8d4ac3fd0aebcfaa762760415ab57eb1e92d8e7f47d399bae23211b71 node-v23.5.0-linux-s390x.tar.gz +11777040ffeaff5597e82b698391626e9dd069eaa690773c63dc294e74a149f8 node-v23.5.0-linux-s390x.tar.xz +72ca246aafffeac41486bf5594b0223f9a28e7c3d9081a07884b75cc21cf9e8a node-v23.5.0-linux-x64.tar.gz +f3c02df735945267f886f3ea6f7e28d4bb33fe36e12bec77d10b9fa6a12c6279 node-v23.5.0-linux-x64.tar.xz +b390fbdfcac5cbe541f8b1dcbd6f71f074d235084f72d75571278e172ac3e460 node-v23.5.0-win-arm64.7z +8e8f2035a72fdb27a93c4e2275e89201682d386b0026ce2b78a50f650602ff0c node-v23.5.0-win-arm64.zip +4d86167dd98801c723a13e65519822d409b603acbec9b0d1107a4ad8578a7c53 node-v23.5.0-win-x64.7z +e997a1fa51e4555632f54f205e121104f328db2ba058274a3f9da26fe3af3a6f node-v23.5.0-win-x64.zip +52f7d56901398827ed83ea282eefc49becf139737df0f47c3c78fd048d193eed node-v23.5.0-x64.msi +e064e69b5b9fa0ef61fe09ed925b4a8a3ac19ff96ae1b987147917ab0b23dbef node-v23.5.0.pkg +d6c29133361faa7dd7dfda353cb15f150683a2f5c6fe6a8d19c4dcb1594c80e4 node-v23.5.0.tar.gz +32e77b36c0774c68baab41bc7c2acc58663ca0a2b7c4d3e9bec6f761c15fdac0 node-v23.5.0.tar.xz +4308e6d90e22c6545fe97f8fc1537f2b5ffae5360f4672ebe4957dc74770649b win-arm64/node.exe +46a85ee5432885387948e02ced2499975b34cc2080ea3ed4e99b6c7323d38d74 win-arm64/node.lib +65b3e9c20a708d30ce3246d0ca7034db99dfe039ad375dfe8820851940b2b02e win-arm64/node_pdb.7z +0ddf817017304898f9330425b95a15eb4f3810f0e16a843e4565d37265fa7f7b win-arm64/node_pdb.zip +0f91994f833bc232c990fee8694ca00d4d60c67f6cd0f7f0633c9abc34c91888 win-x64/node.exe +4a54d5aeab30bb14dbad9260f6430c81f1e1afb430c68c40f6e5fec7ce288e2e win-x64/node.lib +9f256078ae21ed3bc7da3866181b8c75ed67efd718f4a13f26657a22af8af0c4 win-x64/node_pdb.7z +76a85bea6ba187c384c13b4708e5b8c3a74b3994fd291ecee161c08c05c71d0e win-x64/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEwNYkhDnx1WBKr/tAIdkA/9sjN1YFAmdka/cACgkQIdkA/9sj +N1ZnaBAAqCD1nSAaPHR1U7dv7cHhiTSfzz6bVm+jWJ0DGRv+idSa48ezVnGcd22a +lIomL168Dl6BzdlMrcppLMIxO2FiV3hbbkOc50kBUzp0AsaQfbGgdJ2AhvMbaawx +8U8Pzxnp3KZ6WVM+3my4+jzz0/74aPY9AeUQWqL0fT7jCupAKvUu9680yGiA0UOB +DcHEYEhDWVzPmdkIeoSsd2IWMMtAUpwRuXmx48GZ7dMDmSCHY2JrRxkffD3PEG3t +eMyYdQYaQZMQ0p/PScjaUqT1SB5g0nZ9h9z67ToxJJg/fTlyNrwzyoNOCr9kfyP/ +dl6b5ZyypIkkl2qpaVd+a+L/u5Q5L9RWBfI56x5iC7UTg5BG5EcXrl6KWcUC+qmC +O0NPBmHZlPq0uc5epgaujuCvryAyF1C6PD3JJfJUQdnrBg/7MZ0uojANfO9ad+ne +Di10c5VBPBq6WHG+UDUW3WrEDqUzC7aCVEiPjIe3fHlqF7/RD7T0+In6U+RmwSrB +jt4dkCqc4FNNkrVVXO80NS2N2MQtmwo0jIgZoP5VWnMGQwuwjbvwKrL+YWM+zTZZ +WrJeP03CHERqc8xzV4/MuXDqlVi/1cTIHSHCPH7j2nF3uiZh2+vtNZjgF4SKY29t +9+mLttox196OyaBoK1vhcuPWunYMDz72xIBI+9RndbjHabWWaNA= +=4PF6 +-----END PGP SIGNATURE----- +``` From 00943d594fc5a9998b7826fd0cd3098275e2d283 Mon Sep 17 00:00:00 2001 From: RedYetiDev <38299977+RedYetiDev@users.noreply.github.com> Date: Wed, 13 Nov 2024 21:00:32 -0500 Subject: [PATCH 65/65] feat(ui): add `ui-components` package --- apps/site/.storybook/main.ts | 62 -- apps/site/.storybook/preview-head.html | 20 - apps/site/.storybook/preview.tsx | 40 -- apps/site/app/[locale]/error.tsx | 6 +- apps/site/app/[locale]/layout.tsx | 2 +- apps/site/app/[locale]/not-found.tsx | 6 +- apps/site/app/global-error.tsx | 6 +- .../Common/AvatarGroup/Avatar/index.tsx | 53 -- .../AvatarGroup/Overlay/index.stories.tsx | 21 - .../site/components/Common/BannerWithLink.tsx | 23 + .../components/Common/BlogPostCard/index.tsx | 2 +- apps/site/components/Common/Button/index.tsx | 70 --- .../Common/CodeTabs/index.module.css | 54 -- .../site/components/Common/CodeTabs/index.tsx | 41 -- apps/site/components/Common/CopyButton.tsx | 43 ++ .../Common/LanguageDropDown/index.module.css | 49 -- .../components/Common/Pagination/index.tsx | 10 +- .../ProgressionSidebarGroup/index.tsx | 2 +- .../ProgressionSidebarItem/index.tsx | 8 +- apps/site/components/Common/Search/index.tsx | 6 +- apps/site/components/Common/Search/utils.ts | 3 + .../Common/ThemeToggle/index.module.css | 13 - .../components/Containers/Footer/index.tsx | 30 +- .../components/Containers/NavBar/index.tsx | 97 --- .../Containers/Sidebar/SidebarGroup/index.tsx | 2 +- .../Containers/Sidebar/SidebarItem/index.tsx | 8 +- .../DownloadButton/index.stories.tsx | 30 - .../Downloads/DownloadButton/index.tsx | 10 +- .../Downloads/Release/BitnessDropdown.tsx | 2 +- .../Downloads/Release/DownloadButton.tsx | 6 +- .../Release/OperatingSystemDropdown.tsx | 2 +- .../Downloads/Release/PlatformDropdown.tsx | 2 +- .../Downloads/Release/ReleaseCodeBox.tsx | 15 +- .../Downloads/Release/SourceButton.tsx | 6 +- .../Downloads/Release/VersionDropdown.tsx | 2 +- .../MDX/Calendar/Event/index.stories.tsx | 18 - .../MDX/{CodeBox/index.tsx => CodeBox.tsx} | 7 +- .../components/MDX/CodeBox/index.stories.tsx | 42 -- .../MDX/{CodeTabs/index.tsx => CodeTabs.tsx} | 10 +- .../components/MDX/CodeTabs/index.stories.tsx | 51 -- apps/site/components/MDX/Image.tsx | 26 + apps/site/components/MDX/Image/index.tsx | 40 -- .../components/__mocks__/client-context.mjs | 9 - .../components/__mocks__/github-slugger.mjs | 7 - apps/site/components/__mocks__/next-intl.mjs | 32 - .../site/components/__mocks__/next-router.mjs | 4 - apps/site/components/withActiveLink.tsx | 21 + apps/site/components/withAvatarGroup.tsx | 6 +- apps/site/components/withBadge.tsx | 10 +- apps/site/components/withBanner.tsx | 6 +- apps/site/components/withBlogCrossLinks.tsx | 6 +- apps/site/components/withBreadcrumbs.tsx | 16 +- apps/site/components/withButton.tsx | 15 + apps/site/components/withCrossLink.tsx | 21 + apps/site/components/withNavBar.tsx | 50 +- apps/site/components/withNodejsLogo.tsx | 2 +- apps/site/components/withRouterSelect.tsx | 2 +- .../site/components/withSidebarCrossLinks.tsx | 6 +- apps/site/eslint.config.js | 11 - .../hooks/react-generic/useSiteNavigation.ts | 7 +- apps/site/layouts/GlowingBackdrop.tsx | 2 +- apps/site/layouts/Post.tsx | 2 +- apps/site/next-data/generators/blogData.mjs | 2 +- .../next-data/generators/websiteFeeds.mjs | 4 +- apps/site/next.mdx.use.client.mjs | 8 +- apps/site/package.json | 4 - apps/site/providers/notificationProvider.tsx | 3 +- .../scripts/orama-search/get-documents.mjs | 2 +- .../scripts/orama-search/sync-orama-cloud.mjs | 3 +- apps/site/scripts/release-post/index.mjs | 5 +- apps/site/tailwind.config.ts | 5 +- apps/site/tsconfig.json | 4 +- apps/site/turbo.json | 17 +- apps/site/types/blog.ts | 2 +- apps/site/types/i18n.ts | 6 - apps/site/types/index.ts | 1 - apps/site/util/__tests__/authorUtils.test.mjs | 2 +- package-lock.json | 566 ++++++------------ packages/ui-components/.postcssrc.json | 11 + packages/ui-components/.storybook/preview.tsx | 9 +- .../ActiveLink/__tests__/index.test.mjs | 24 +- .../Common/ActiveLink/index.tsx | 17 +- .../AvatarGroup/Avatar/index.module.css | 0 .../AvatarGroup/Avatar/index.stories.tsx | 4 +- .../Common/AvatarGroup/Avatar/index.tsx | 70 +++ .../AvatarGroup/Overlay/index.module.css | 0 .../AvatarGroup/Overlay/index.stories.tsx | 17 + .../Common/AvatarGroup/Overlay/index.tsx | 11 +- .../AvatarGroup/__tests__/index.test.mjs | 3 +- .../Common/AvatarGroup/index.module.css | 0 .../Common/AvatarGroup/index.stories.tsx | 25 +- .../Common/AvatarGroup/index.tsx | 16 +- .../Common/Badge/index.module.css | 0 .../Common/Badge/index.stories.tsx | 2 +- .../ui-components}/Common/Badge/index.tsx | 10 +- .../Common/Banner/index.module.css | 0 .../Common/Banner/index.stories.tsx | 12 +- .../ui-components}/Common/Banner/index.tsx | 10 +- .../Common/Blockquote/index.module.css | 0 .../Common/Blockquote/index.stories.tsx | 2 +- .../Common/Blockquote/index.tsx | 0 .../BreadcrumbHomeLink/index.module.css | 0 .../Breadcrumbs/BreadcrumbHomeLink/index.tsx | 14 +- .../BreadcrumbItem/index.module.css | 0 .../Breadcrumbs/BreadcrumbItem/index.tsx | 0 .../BreadcrumbLink/index.module.css | 0 .../Breadcrumbs/BreadcrumbLink/index.tsx | 10 +- .../BreadcrumbRoot/index.module.css | 0 .../Breadcrumbs/BreadcrumbRoot/index.tsx | 0 .../BreadcrumbTruncatedItem/index.tsx | 2 +- .../Common/Breadcrumbs/index.stories.tsx | 2 +- .../Common/Breadcrumbs/index.tsx | 30 +- .../Common/Button/index.module.css | 0 .../Common/Button/index.stories.tsx | 2 +- .../ui-components/Common/Button/index.tsx | 35 ++ .../Common/CodeBox/index.module.css | 0 .../Common/CodeBox/index.stories.tsx | 15 +- .../ui-components}/Common/CodeBox/index.tsx | 52 +- .../Common/CodeTabs/index.module.css | 17 + .../Common/CodeTabs/index.stories.tsx | 15 +- .../ui-components/Common/CodeTabs/index.tsx | 18 + .../Common/CrossLink/index.module.css | 0 .../Common/CrossLink/index.stories.tsx | 2 +- .../ui-components}/Common/CrossLink/index.tsx | 29 +- .../Common/GlowingBackdrop/index.module.css | 0 .../Common/GlowingBackdrop/index.stories.tsx | 2 +- .../Common/GlowingBackdrop/index.tsx | 3 +- .../Common/LanguageDropDown/index.module.css | 23 + .../Common/LanguageDropDown/index.stories.tsx | 2 +- .../Common/LanguageDropDown/index.tsx | 18 +- .../Common/NodejsLogo/index.module.css | 0 .../Common/NodejsLogo/index.stories.tsx | 2 +- .../Common/NodejsLogo/index.tsx | 3 +- .../Common/Notification/index.module.css | 0 .../Common/Notification/index.stories.tsx | 2 +- .../Common/Notification/index.tsx | 0 .../ui-components}/Common/PrevNextArrow.tsx | 0 .../Common/Preview/index.module.css | 0 .../Common/Preview/index.stories.tsx | 2 +- .../ui-components}/Common/Preview/index.tsx | 6 +- .../Common/Select/__tests__/index.test.mjs | 0 .../Common/Select/index.module.css | 0 .../Common/Select/index.stories.tsx | 6 +- .../ui-components}/Common/Select/index.tsx | 2 +- .../Common/Tabs/__tests__/index.test.mjs | 3 +- .../Common/Tabs/index.module.css | 0 .../Common/Tabs/index.stories.tsx | 2 +- .../ui-components}/Common/Tabs/index.tsx | 0 .../ThemeToggle/__tests__/index.test.mjs | 0 .../Common/ThemeToggle/index.module.css | 7 + .../Common/ThemeToggle/index.stories.tsx | 2 +- .../Common/ThemeToggle/index.tsx | 11 +- .../Common/Tooltip/index.module.css | 0 .../Common/Tooltip/index.stories.tsx | 6 +- .../ui-components}/Common/Tooltip/index.tsx | 0 .../NavBar/NavItem/index.module.css | 0 .../NavBar/NavItem/index.stories.tsx | 3 +- .../Containers/NavBar/NavItem/index.tsx | 10 +- .../Containers/NavBar/index.module.css | 0 .../Containers/NavBar/index.stories.tsx | 17 +- .../ui-components/Containers/NavBar/index.tsx | 90 +++ .../__design__/colors.stories.tsx | 0 .../__design__/effects.stories.tsx | 0 .../__design__/font-family.stories.tsx | 0 .../__design__/list.stories.tsx | 0 .../__design__/table.stories.tsx | 0 .../__design__/text.stories.tsx | 0 packages/ui-components/__mocks__/styleMock.js | 1 + packages/ui-components/__mocks__/utils.ts | 24 + packages/ui-components/global.d.ts | 4 + packages/ui-components/jest.config.mjs | 30 + packages/ui-components/package.json | 37 +- .../ui-components}/styles/base.css | 0 .../ui-components}/styles/effects.css | 0 .../ui-components}/styles/index.css | 0 .../ui-components}/styles/locals.css | 0 .../ui-components}/styles/markdown.css | 0 packages/ui-components/tailwind.config.ts | 154 ++++- packages/ui-components/tsconfig.json | 13 +- packages/ui-components/turbo.json | 39 +- packages/ui-components/types.ts | 23 +- .../utils}/__tests__/imageUtils.test.mjs | 0 .../ui-components/utils}/imageUtils.ts | 0 183 files changed, 1309 insertions(+), 1539 deletions(-) delete mode 100644 apps/site/.storybook/main.ts delete mode 100644 apps/site/.storybook/preview-head.html delete mode 100644 apps/site/.storybook/preview.tsx delete mode 100644 apps/site/components/Common/AvatarGroup/Avatar/index.tsx delete mode 100644 apps/site/components/Common/AvatarGroup/Overlay/index.stories.tsx create mode 100644 apps/site/components/Common/BannerWithLink.tsx delete mode 100644 apps/site/components/Common/Button/index.tsx delete mode 100644 apps/site/components/Common/CodeTabs/index.module.css delete mode 100644 apps/site/components/Common/CodeTabs/index.tsx create mode 100644 apps/site/components/Common/CopyButton.tsx delete mode 100644 apps/site/components/Common/LanguageDropDown/index.module.css delete mode 100644 apps/site/components/Common/ThemeToggle/index.module.css delete mode 100644 apps/site/components/Containers/NavBar/index.tsx delete mode 100644 apps/site/components/Downloads/DownloadButton/index.stories.tsx delete mode 100644 apps/site/components/MDX/Calendar/Event/index.stories.tsx rename apps/site/components/MDX/{CodeBox/index.tsx => CodeBox.tsx} (71%) delete mode 100644 apps/site/components/MDX/CodeBox/index.stories.tsx rename apps/site/components/MDX/{CodeTabs/index.tsx => CodeTabs.tsx} (82%) delete mode 100644 apps/site/components/MDX/CodeTabs/index.stories.tsx create mode 100644 apps/site/components/MDX/Image.tsx delete mode 100644 apps/site/components/MDX/Image/index.tsx delete mode 100644 apps/site/components/__mocks__/client-context.mjs delete mode 100644 apps/site/components/__mocks__/github-slugger.mjs delete mode 100644 apps/site/components/__mocks__/next-intl.mjs delete mode 100644 apps/site/components/__mocks__/next-router.mjs create mode 100644 apps/site/components/withActiveLink.tsx create mode 100644 apps/site/components/withButton.tsx create mode 100644 apps/site/components/withCrossLink.tsx delete mode 100644 apps/site/types/i18n.ts create mode 100644 packages/ui-components/.postcssrc.json rename {apps/site/components => packages/ui-components}/Common/ActiveLink/__tests__/index.test.mjs (65%) rename {apps/site/components => packages/ui-components}/Common/ActiveLink/index.tsx (71%) rename {apps/site/components => packages/ui-components}/Common/AvatarGroup/Avatar/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Common/AvatarGroup/Avatar/index.stories.tsx (79%) create mode 100644 packages/ui-components/Common/AvatarGroup/Avatar/index.tsx rename {apps/site/components => packages/ui-components}/Common/AvatarGroup/Overlay/index.module.css (100%) create mode 100644 packages/ui-components/Common/AvatarGroup/Overlay/index.stories.tsx rename {apps/site/components => packages/ui-components}/Common/AvatarGroup/Overlay/index.tsx (72%) rename {apps/site/components => packages/ui-components}/Common/AvatarGroup/__tests__/index.test.mjs (92%) rename {apps/site/components => packages/ui-components}/Common/AvatarGroup/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Common/AvatarGroup/index.stories.tsx (63%) rename {apps/site/components => packages/ui-components}/Common/AvatarGroup/index.tsx (73%) rename {apps/site/components => packages/ui-components}/Common/Badge/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Common/Badge/index.stories.tsx (91%) rename {apps/site/components => packages/ui-components}/Common/Badge/index.tsx (73%) rename {apps/site/components => packages/ui-components}/Common/Banner/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Common/Banner/index.stories.tsx (61%) rename {apps/site/components => packages/ui-components}/Common/Banner/index.tsx (58%) rename {apps/site/components => packages/ui-components}/Common/Blockquote/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Common/Blockquote/index.stories.tsx (95%) rename {apps/site/components => packages/ui-components}/Common/Blockquote/index.tsx (100%) rename {apps/site/components => packages/ui-components}/Common/Breadcrumbs/BreadcrumbHomeLink/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Common/Breadcrumbs/BreadcrumbHomeLink/index.tsx (59%) rename {apps/site/components => packages/ui-components}/Common/Breadcrumbs/BreadcrumbItem/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Common/Breadcrumbs/BreadcrumbItem/index.tsx (100%) rename {apps/site/components => packages/ui-components}/Common/Breadcrumbs/BreadcrumbLink/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Common/Breadcrumbs/BreadcrumbLink/index.tsx (80%) rename {apps/site/components => packages/ui-components}/Common/Breadcrumbs/BreadcrumbRoot/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Common/Breadcrumbs/BreadcrumbRoot/index.tsx (100%) rename {apps/site/components => packages/ui-components}/Common/Breadcrumbs/BreadcrumbTruncatedItem/index.tsx (66%) rename {apps/site/components => packages/ui-components}/Common/Breadcrumbs/index.stories.tsx (95%) rename {apps/site/components => packages/ui-components}/Common/Breadcrumbs/index.tsx (61%) rename {apps/site/components => packages/ui-components}/Common/Button/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Common/Button/index.stories.tsx (94%) create mode 100644 packages/ui-components/Common/Button/index.tsx rename {apps/site/components => packages/ui-components}/Common/CodeBox/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Common/CodeBox/index.stories.tsx (67%) rename {apps/site/components => packages/ui-components}/Common/CodeBox/index.tsx (68%) create mode 100644 packages/ui-components/Common/CodeTabs/index.module.css rename {apps/site/components => packages/ui-components}/Common/CodeTabs/index.stories.tsx (80%) create mode 100644 packages/ui-components/Common/CodeTabs/index.tsx rename {apps/site/components => packages/ui-components}/Common/CrossLink/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Common/CrossLink/index.stories.tsx (92%) rename {apps/site/components => packages/ui-components}/Common/CrossLink/index.tsx (57%) rename {apps/site/components => packages/ui-components}/Common/GlowingBackdrop/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Common/GlowingBackdrop/index.stories.tsx (76%) rename {apps/site/components => packages/ui-components}/Common/GlowingBackdrop/index.tsx (99%) create mode 100644 packages/ui-components/Common/LanguageDropDown/index.module.css rename {apps/site/components => packages/ui-components}/Common/LanguageDropDown/index.stories.tsx (84%) rename {apps/site/components => packages/ui-components}/Common/LanguageDropDown/index.tsx (76%) rename {apps/site/components => packages/ui-components}/Common/NodejsLogo/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Common/NodejsLogo/index.stories.tsx (81%) rename {apps/site/components => packages/ui-components}/Common/NodejsLogo/index.tsx (99%) rename {apps/site/components => packages/ui-components}/Common/Notification/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Common/Notification/index.stories.tsx (91%) rename {apps/site/components => packages/ui-components}/Common/Notification/index.tsx (100%) rename {apps/site/components => packages/ui-components}/Common/PrevNextArrow.tsx (100%) rename {apps/site/components => packages/ui-components}/Common/Preview/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Common/Preview/index.stories.tsx (93%) rename {apps/site/components => packages/ui-components}/Common/Preview/index.tsx (90%) rename {apps/site/components => packages/ui-components}/Common/Select/__tests__/index.test.mjs (100%) rename {apps/site/components => packages/ui-components}/Common/Select/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Common/Select/index.stories.tsx (97%) rename {apps/site/components => packages/ui-components}/Common/Select/index.tsx (98%) rename {apps/site/components => packages/ui-components}/Common/Tabs/__tests__/index.test.mjs (94%) rename {apps/site/components => packages/ui-components}/Common/Tabs/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Common/Tabs/index.stories.tsx (94%) rename {apps/site/components => packages/ui-components}/Common/Tabs/index.tsx (100%) rename {apps/site/components => packages/ui-components}/Common/ThemeToggle/__tests__/index.test.mjs (100%) create mode 100644 packages/ui-components/Common/ThemeToggle/index.module.css rename {apps/site/components => packages/ui-components}/Common/ThemeToggle/index.stories.tsx (77%) rename {apps/site/components => packages/ui-components}/Common/ThemeToggle/index.tsx (73%) rename {apps/site/components => packages/ui-components}/Common/Tooltip/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Common/Tooltip/index.stories.tsx (88%) rename {apps/site/components => packages/ui-components}/Common/Tooltip/index.tsx (100%) rename {apps/site/components => packages/ui-components}/Containers/NavBar/NavItem/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Containers/NavBar/NavItem/index.stories.tsx (87%) rename {apps/site/components => packages/ui-components}/Containers/NavBar/NavItem/index.tsx (81%) rename {apps/site/components => packages/ui-components}/Containers/NavBar/index.module.css (100%) rename {apps/site/components => packages/ui-components}/Containers/NavBar/index.stories.tsx (69%) create mode 100644 packages/ui-components/Containers/NavBar/index.tsx rename {apps/site/components => packages/ui-components}/__design__/colors.stories.tsx (100%) rename {apps/site/components => packages/ui-components}/__design__/effects.stories.tsx (100%) rename {apps/site/components => packages/ui-components}/__design__/font-family.stories.tsx (100%) rename {apps/site/components => packages/ui-components}/__design__/list.stories.tsx (100%) rename {apps/site/components => packages/ui-components}/__design__/table.stories.tsx (100%) rename {apps/site/components => packages/ui-components}/__design__/text.stories.tsx (100%) create mode 100644 packages/ui-components/__mocks__/styleMock.js create mode 100644 packages/ui-components/__mocks__/utils.ts create mode 100644 packages/ui-components/global.d.ts create mode 100644 packages/ui-components/jest.config.mjs rename {apps/site => packages/ui-components}/styles/base.css (100%) rename {apps/site => packages/ui-components}/styles/effects.css (100%) rename {apps/site => packages/ui-components}/styles/index.css (100%) rename {apps/site => packages/ui-components}/styles/locals.css (100%) rename {apps/site => packages/ui-components}/styles/markdown.css (100%) rename {apps/site/util => packages/ui-components/utils}/__tests__/imageUtils.test.mjs (100%) rename {apps/site/util => packages/ui-components/utils}/imageUtils.ts (100%) diff --git a/apps/site/.storybook/main.ts b/apps/site/.storybook/main.ts deleted file mode 100644 index 8c8a4087103a6..0000000000000 --- a/apps/site/.storybook/main.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { join } from 'node:path'; - -import type { StorybookConfig } from '@storybook/react-webpack5'; - -const mocksFolder = join(__dirname, '../components/__mocks__'); - -const config: StorybookConfig = { - stories: ['../components/**/*.stories.tsx'], - logLevel: 'error', - staticDirs: ['../public'], - typescript: { reactDocgen: false, check: false }, - core: { disableTelemetry: true, disableWhatsNewNotifications: true }, - framework: '@storybook/react-webpack5', - swc: () => ({ jsc: { transform: { react: { runtime: 'automatic' } } } }), - addons: [ - '@storybook/addon-webpack5-compiler-swc', - '@storybook/addon-controls', - '@storybook/addon-interactions', - '@storybook/addon-themes', - '@storybook/addon-viewport', - { - name: '@storybook/addon-styling-webpack', - options: { - rules: [ - { - test: /\.css$/, - use: [ - 'style-loader', - { loader: 'css-loader', options: { url: false } }, - 'postcss-loader', - ], - }, - ], - }, - }, - ], - webpack: async config => ({ - ...config, - // We want to conform as much as possible with our target settings - target: 'browserslist:development', - // Performance Hints do not make sense on Storybook as it is bloated by design - performance: { hints: false }, - // `nodevu` is a Node.js-specific package that requires Node.js modules - // this is incompatible with Storybook. So we just mock the module - resolve: { - ...config.resolve, - alias: { - 'next-intl/navigation': join(mocksFolder, './next-intl.mjs'), - '@/client-context': join(mocksFolder, './client-context.mjs'), - '@': join(__dirname, '../'), - }, - }, - // Removes Pesky Critical Dependency Warnings due to `next/font` - ignoreWarnings: [ - e => - e.message.includes('was not found in') || - e.message.includes('generated code contains'), - ], - }), -}; - -export default config; diff --git a/apps/site/.storybook/preview-head.html b/apps/site/.storybook/preview-head.html deleted file mode 100644 index f33e88387634f..0000000000000 --- a/apps/site/.storybook/preview-head.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - diff --git a/apps/site/.storybook/preview.tsx b/apps/site/.storybook/preview.tsx deleted file mode 100644 index be7c0855f0288..0000000000000 --- a/apps/site/.storybook/preview.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import englishLocale from '@node-core/website-i18n/locales/en.json'; -import { withThemeByDataAttribute } from '@storybook/addon-themes'; -import type { Preview, ReactRenderer } from '@storybook/react'; -import { NextIntlClientProvider } from 'next-intl'; - -import { NotificationProvider } from '@/providers/notificationProvider'; - -import { - STORYBOOK_MODES, - STORYBOOK_SIZES, -} from '../../../.storybook/constants'; - -import '../styles/index.css'; - -const preview: Preview = { - parameters: { - chromatic: { modes: STORYBOOK_MODES }, - viewport: { defaultViewport: 'large', viewports: STORYBOOK_SIZES }, - }, - decorators: [ - Story => ( - - - - - - ), - withThemeByDataAttribute({ - themes: { light: '', dark: 'dark' }, - defaultTheme: 'light', - attributeName: 'data-theme', - }), - ], -}; - -export default preview; diff --git a/apps/site/app/[locale]/error.tsx b/apps/site/app/[locale]/error.tsx index 2a4d2e3431e71..55842eb16d39a 100644 --- a/apps/site/app/[locale]/error.tsx +++ b/apps/site/app/[locale]/error.tsx @@ -4,7 +4,7 @@ import { ArrowRightIcon } from '@heroicons/react/24/solid'; import { useTranslations } from 'next-intl'; import type { FC } from 'react'; -import Button from '@/components/Common/Button'; +import WithButton from '@/components/withButton'; import GlowingBackdropLayout from '@/layouts/GlowingBackdrop'; const ErrorPage: FC<{ error: Error }> = () => { @@ -19,10 +19,10 @@ const ErrorPage: FC<{ error: Error }> = () => {

{t('layouts.error.internalServerError.description')}

- + ); }; diff --git a/apps/site/app/[locale]/layout.tsx b/apps/site/app/[locale]/layout.tsx index b1887eea5c80e..451521fa975ba 100644 --- a/apps/site/app/[locale]/layout.tsx +++ b/apps/site/app/[locale]/layout.tsx @@ -10,7 +10,7 @@ import { availableLocalesMap, defaultLocale } from '@/next.locales.mjs'; import { LocaleProvider } from '@/providers/localeProvider'; import { ThemeProvider } from '@/providers/themeProvider'; -import '@/styles/index.css'; +import '@node-core/ui-components/styles/index.css'; const fontClasses = classNames(IBM_PLEX_MONO.variable, OPEN_SANS.variable); diff --git a/apps/site/app/[locale]/not-found.tsx b/apps/site/app/[locale]/not-found.tsx index ec3a343628e52..23e84e8de0724 100644 --- a/apps/site/app/[locale]/not-found.tsx +++ b/apps/site/app/[locale]/not-found.tsx @@ -5,7 +5,7 @@ import Image from 'next/image'; import { useTranslations } from 'next-intl'; import type { FC } from 'react'; -import Button from '@/components/Common/Button'; +import WithButton from '@/components/withButton'; import GlowingBackdropLayout from '@/layouts/GlowingBackdrop'; const NotFoundPage: FC = () => { @@ -30,10 +30,10 @@ const NotFoundPage: FC = () => {

{t('layouts.error.notFound.description')}

- + ); }; diff --git a/apps/site/app/global-error.tsx b/apps/site/app/global-error.tsx index 53238830c7a2c..77697599610f2 100644 --- a/apps/site/app/global-error.tsx +++ b/apps/site/app/global-error.tsx @@ -3,7 +3,7 @@ import { ArrowRightIcon } from '@heroicons/react/24/solid'; import type { FC } from 'react'; -import Button from '@/components/Common/Button'; +import WithButton from '@/components/withButton'; import BaseLayout from '@/layouts/Base'; import GlowingBackdropLayout from '@/layouts/GlowingBackdrop'; @@ -17,10 +17,10 @@ const GlobalErrorPage: FC<{ error: Error }> = () => (

This page has thrown a non-recoverable error.

- + diff --git a/apps/site/components/Common/AvatarGroup/Avatar/index.tsx b/apps/site/components/Common/AvatarGroup/Avatar/index.tsx deleted file mode 100644 index c992fab126f5c..0000000000000 --- a/apps/site/components/Common/AvatarGroup/Avatar/index.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import * as RadixAvatar from '@radix-ui/react-avatar'; -import classNames from 'classnames'; -import type { ComponentPropsWithoutRef, ElementRef } from 'react'; -import { forwardRef } from 'react'; - -import Link from '@/components/Link'; - -import styles from './index.module.css'; - -export type AvatarProps = { - image?: string; - name?: string; - nickname: string; - fallback?: string; - size?: 'small' | 'medium'; - url?: string; -}; - -const Avatar = forwardRef< - ElementRef, - ComponentPropsWithoutRef & AvatarProps ->(({ image, nickname, name, fallback, url, size = 'small', ...props }, ref) => { - const Wrapper = url ? Link : 'div'; - - return ( - - - - - {fallback} - - - - ); -}); - -export default Avatar; diff --git a/apps/site/components/Common/AvatarGroup/Overlay/index.stories.tsx b/apps/site/components/Common/AvatarGroup/Overlay/index.stories.tsx deleted file mode 100644 index 1c462999ccd77..0000000000000 --- a/apps/site/components/Common/AvatarGroup/Overlay/index.stories.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import type { Meta as MetaObj, StoryObj } from '@storybook/react'; - -import AvatarOverlay from '@/components/Common/AvatarGroup/Overlay'; -import { getAuthorWithId, getAuthorWithName } from '@/util/authorUtils'; - -type Story = StoryObj; -type Meta = MetaObj; - -export const Default: Story = { - args: getAuthorWithId(['nodejs'], true)[0], -}; - -export const FallBack: Story = { - args: getAuthorWithName(['Node.js'], true)[0], -}; - -export const WithoutName: Story = { - args: getAuthorWithId(['canerakdas'], true)[0], -}; - -export default { component: AvatarOverlay } as Meta; diff --git a/apps/site/components/Common/BannerWithLink.tsx b/apps/site/components/Common/BannerWithLink.tsx new file mode 100644 index 0000000000000..d87921d7cdca5 --- /dev/null +++ b/apps/site/components/Common/BannerWithLink.tsx @@ -0,0 +1,23 @@ +import { ArrowUpRightIcon } from '@heroicons/react/24/outline'; +import type { BannerProps } from '@node-core/ui-components/Common/Banner'; +import Banner from '@node-core/ui-components/Common/Banner'; +import type { FC, PropsWithChildren } from 'react'; + +import Link from '@/components/Link'; + +type BannerWithLinkProps = BannerProps & { + link: string; +}; + +const BannerWithLink: FC> = ({ + type = 'default', + link, + children, +}) => ( + + {link ? {children} : children} + {link && } + +); + +export default BannerWithLink; diff --git a/apps/site/components/Common/BlogPostCard/index.tsx b/apps/site/components/Common/BlogPostCard/index.tsx index 4f8696dd20565..96c4582d7c084 100644 --- a/apps/site/components/Common/BlogPostCard/index.tsx +++ b/apps/site/components/Common/BlogPostCard/index.tsx @@ -1,8 +1,8 @@ +import Preview from '@node-core/ui-components/Common/Preview'; import { useTranslations } from 'next-intl'; import type { FC } from 'react'; import FormattedTime from '@/components/Common/FormattedTime'; -import Preview from '@/components/Common/Preview'; import Link from '@/components/Link'; import WithAvatarGroup from '@/components/withAvatarGroup'; import { mapBlogCategoryToPreviewType } from '@/util/blogUtils'; diff --git a/apps/site/components/Common/Button/index.tsx b/apps/site/components/Common/Button/index.tsx deleted file mode 100644 index 804cc296ecf46..0000000000000 --- a/apps/site/components/Common/Button/index.tsx +++ /dev/null @@ -1,70 +0,0 @@ -'use client'; - -import classNames from 'classnames'; -import type { - FC, - AnchorHTMLAttributes, - KeyboardEvent, - MouseEvent, -} from 'react'; - -import Link from '@/components/Link'; - -import styles from './index.module.css'; - -type ButtonProps = AnchorHTMLAttributes & { - kind?: 'neutral' | 'primary' | 'secondary' | 'special'; - disabled?: boolean; -}; - -const Button: FC = ({ - kind = 'primary', - disabled = false, - href = undefined, - children, - className, - onClick, - ...props -}) => { - const onKeyDownHandler = (e: KeyboardEvent) => { - if (disabled) { - e.preventDefault(); - return; - } - - if (e.key === 'Enter' || e.key === ' ') { - e.preventDefault(); - if (typeof onClick === 'function') { - onClick(e as unknown as MouseEvent); - } - } - }; - - const onClickHandler = (e: MouseEvent) => { - if (disabled) { - e.preventDefault(); - return; - } - - if (typeof onClick === 'function') { - onClick(e); - } - }; - - return ( - - {children} - - ); -}; - -export default Button; diff --git a/apps/site/components/Common/CodeTabs/index.module.css b/apps/site/components/Common/CodeTabs/index.module.css deleted file mode 100644 index 5c79f7ecd4fd4..0000000000000 --- a/apps/site/components/Common/CodeTabs/index.module.css +++ /dev/null @@ -1,54 +0,0 @@ -.root { - > [role='tabpanel'] > :first-child { - @apply rounded-t-none; - } - - > div:nth-of-type(1) { - @apply flex - rounded-t - border-x - border-t - border-neutral-900 - bg-neutral-950 - px-2 - pt-3 - md:px-4; - - .trigger { - @apply border-b - border-b-transparent - px-1 - text-neutral-200; - - &[data-state='active'] { - @apply border-b-green-400 - text-green-400; - } - } - - .link { - @apply hidden - items-center - gap-2 - text-center - text-neutral-200 - motion-safe:transition-colors - lg:flex; - - & > .icon { - @apply size-4 - text-neutral-300; - } - - &:is(:link, :visited) { - &:hover { - @apply text-neutral-400; - - & > .icon { - @apply text-neutral-600; - } - } - } - } - } -} diff --git a/apps/site/components/Common/CodeTabs/index.tsx b/apps/site/components/Common/CodeTabs/index.tsx deleted file mode 100644 index 614db0017079b..0000000000000 --- a/apps/site/components/Common/CodeTabs/index.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { ArrowUpRightIcon } from '@heroicons/react/24/solid'; -import type { ComponentProps, FC, PropsWithChildren } from 'react'; - -import Tabs from '@/components/Common/Tabs'; -import { Link } from '@/navigation.mjs'; - -import styles from './index.module.css'; - -type CodeTabsProps = Pick< - ComponentProps, - 'tabs' | 'defaultValue' -> & { - linkUrl?: string; - linkText?: string; -}; - -const CodeTabs: FC> = ({ - children, - linkUrl, - linkText, - ...props -}) => ( - - {linkText} - - - ) - } - > - {children} - -); - -export default CodeTabs; diff --git a/apps/site/components/Common/CopyButton.tsx b/apps/site/components/Common/CopyButton.tsx new file mode 100644 index 0000000000000..84343a3c1d32b --- /dev/null +++ b/apps/site/components/Common/CopyButton.tsx @@ -0,0 +1,43 @@ +'use client'; + +import { + DocumentDuplicateIcon, + CodeBracketIcon, +} from '@heroicons/react/24/outline'; +import type { CopyButtonProps } from '@node-core/ui-components/Common/CodeBox'; +import { useTranslations } from 'next-intl'; +import type { FC } from 'react'; + +import WithButton from '@/components/withButton'; +import { useCopyToClipboard, useNotification } from '@/hooks'; + +const CopyButton: FC = ({ styles, ref }) => { + const notify = useNotification(); + const [, copyToClipboard] = useCopyToClipboard(); + const t = useTranslations(); + + const onCopy = async () => { + if (ref.current?.textContent) { + copyToClipboard(ref.current.textContent); + + notify({ + duration: 3000, + message: ( +
+ + {t('components.common.codebox.copied')} +
+ ), + }); + } + }; + + return ( + + + {t('components.common.codebox.copy')} + + ); +}; + +export default CopyButton; diff --git a/apps/site/components/Common/LanguageDropDown/index.module.css b/apps/site/components/Common/LanguageDropDown/index.module.css deleted file mode 100644 index 7f1a0d1052106..0000000000000 --- a/apps/site/components/Common/LanguageDropDown/index.module.css +++ /dev/null @@ -1,49 +0,0 @@ -.languageDropdown { - @apply h-9 - w-9 - rounded-md - p-2 - text-neutral-700 - motion-safe:transition-colors - dark:text-neutral-300; - - &:hover { - @apply bg-neutral-100 - dark:bg-neutral-900; - } -} - -.dropDownContent { - @apply max-h-80 - w-48 - overflow-hidden - rounded - border - border-neutral-200 - bg-white - shadow-lg - dark:border-neutral-900 - dark:bg-neutral-950; - - > div { - @apply max-h-80 - w-48 overflow-y-auto; - } -} - -.dropDownItem { - @apply cursor-pointer - px-2.5 - py-1.5 - text-sm - font-medium - text-neutral-800 - outline-none - data-[highlighted]:bg-green-600 - data-[highlighted]:text-white - dark:text-white; -} - -.currentDropDown { - @apply bg-green-600 text-white; -} diff --git a/apps/site/components/Common/Pagination/index.tsx b/apps/site/components/Common/Pagination/index.tsx index 969cf4dc86fc3..48f53858f246b 100644 --- a/apps/site/components/Common/Pagination/index.tsx +++ b/apps/site/components/Common/Pagination/index.tsx @@ -2,8 +2,8 @@ import { ArrowRightIcon, ArrowLeftIcon } from '@heroicons/react/20/solid'; import { useTranslations } from 'next-intl'; import type { FC } from 'react'; -import Button from '@/components/Common/Button'; import { useGetPageElements } from '@/components/Common/Pagination/useGetPageElements'; +import WithButton from '@/components/withButton'; import styles from './index.module.css'; @@ -36,7 +36,7 @@ const Pagination: FC = ({ aria-label={t('components.common.pagination.defaultLabel')} className={styles.pagination} > - +
    {parsedPages}
- + ); }; diff --git a/apps/site/components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.tsx b/apps/site/components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.tsx index 0a64e67aa3f08..75626d690993d 100644 --- a/apps/site/components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.tsx +++ b/apps/site/components/Common/ProgressionSidebar/ProgressionSidebarGroup/index.tsx @@ -1,7 +1,7 @@ +import type { FormattedMessage } from '@node-core/ui-components/types'; import type { ComponentProps, FC } from 'react'; import ProgressionSidebarItem from '@/components/Common/ProgressionSidebar/ProgressionSidebarItem'; -import type { FormattedMessage } from '@/types'; import styles from './index.module.css'; diff --git a/apps/site/components/Common/ProgressionSidebar/ProgressionSidebarItem/index.tsx b/apps/site/components/Common/ProgressionSidebar/ProgressionSidebarItem/index.tsx index 047beac8d7326..6a05de8f05c15 100644 --- a/apps/site/components/Common/ProgressionSidebar/ProgressionSidebarItem/index.tsx +++ b/apps/site/components/Common/ProgressionSidebar/ProgressionSidebarItem/index.tsx @@ -1,8 +1,8 @@ +import type { FormattedMessage } from '@node-core/ui-components/types'; import type { FC } from 'react'; -import ActiveLink from '@/components/Common/ActiveLink'; import ProgressionSidebarIcon from '@/components/Common/ProgressionSidebar/ProgressionSidebarIcon'; -import type { FormattedMessage } from '@/types'; +import WithActiveLink from '@/components/withActiveLink'; import styles from './index.module.css'; @@ -15,14 +15,14 @@ const ProgressionSidebarItem: FC = ({ label, link, }) => ( - {label} - + ); export default ProgressionSidebarItem; diff --git a/apps/site/components/Common/Search/index.tsx b/apps/site/components/Common/Search/index.tsx index 1bab4ebbed5ea..4e8728c36ffd6 100644 --- a/apps/site/components/Common/Search/index.tsx +++ b/apps/site/components/Common/Search/index.tsx @@ -3,7 +3,7 @@ import { OramaSearchBox, OramaSearchButton } from '@orama/react-components'; import { useTranslations, useLocale } from 'next-intl'; import { useTheme } from 'next-themes'; -import { type FC } from 'react'; +import type { FC } from 'react'; import { useRouter } from '@/navigation.mjs'; import { @@ -132,9 +132,7 @@ const SearchButton: FC = () => { const fullURLObject = new URL(event.detail.result.path, BASE_URL); // result.path already contains LOCALE. Locale is set to undefined here so router does not add it once again. - router.push(fullURLObject.href, { - locale: undefined, - }); + router.push(fullURLObject.href, { locale: undefined }); }} /> diff --git a/apps/site/components/Common/Search/utils.ts b/apps/site/components/Common/Search/utils.ts index 429f47b3a7d58..fdab2c893008f 100644 --- a/apps/site/components/Common/Search/utils.ts +++ b/apps/site/components/Common/Search/utils.ts @@ -2,6 +2,9 @@ import tailwindConfig from '@/tailwind.config'; const colors = tailwindConfig.theme.colors; export const themeConfig = { + typography: { + '--font-primary': 'var(--font-open-sans)', + }, colors: { light: { '--text-color-primary': colors.neutral[900], diff --git a/apps/site/components/Common/ThemeToggle/index.module.css b/apps/site/components/Common/ThemeToggle/index.module.css deleted file mode 100644 index c2cd6bb230a91..0000000000000 --- a/apps/site/components/Common/ThemeToggle/index.module.css +++ /dev/null @@ -1,13 +0,0 @@ -.themeToggle { - @apply size-9 - rounded-md - p-2 - text-neutral-700 - motion-safe:transition-colors - dark:text-neutral-300; - - &:hover { - @apply bg-neutral-100 - dark:bg-neutral-900; - } -} diff --git a/apps/site/components/Containers/Footer/index.tsx b/apps/site/components/Containers/Footer/index.tsx index 183e57559311b..2937c23f9f7e5 100644 --- a/apps/site/components/Containers/Footer/index.tsx +++ b/apps/site/components/Containers/Footer/index.tsx @@ -1,3 +1,6 @@ +'use client'; + +import NavItem from '@node-core/ui-components/Containers/NavBar/NavItem'; 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'; @@ -7,7 +10,8 @@ import XIcon from '@node-core/ui-components/Icons/Social/X'; import { useTranslations } from 'next-intl'; import type { FC, SVGProps } from 'react'; -import NavItem from '@/components/Containers/NavBar/NavItem'; +import Link from '@/components/Link'; +import { usePathname } from '@/navigation.mjs'; import { siteNavigation } from '@/next.json.mjs'; import styles from './index.module.css'; @@ -23,6 +27,7 @@ const footerSocialIcons: Record>> = { const Footer: FC = () => { const t = useTranslations(); + const pathname = usePathname(); const openJSlink = siteNavigation.footerLinks.at(-1)!; @@ -30,14 +35,25 @@ const Footer: FC = () => {